ruby-on-rails 水豚和dropzone.js(Rails)

snz8szmq  于 2022-11-19  发布在  Ruby
关注(0)|答案(2)|浏览(183)

我试着按照我找到的elsewhere的答案去做,但是由于某种原因,虽然没有任何基本的代码错误,但是下面的测试还是失败了。如果我看一下测试过程中的截图,我可以看到没有附加“书的封面”。所以看起来像是没有发生真正的jpg附件...?我不太清楚该如何从这里开始?
测试项目:

# frozen_string_literal: true

require 'rails_helper'

RSpec.describe 'creating a book', type: :system do
  scenario 'displays a cover image if there is one', js: true do
    visit new_book_path
    fill_in 'Book Title', with: 'Catcher in the Rye'
    el = find('#book_cover', visible: false)
    el.attach_file('db/sample/images/cover-1.jpg')
    click_on 'Create Book'
    expect(page).to have_css('div.cover-large img')
  end
end

我的网页上的预期代码-在开发环境中确认如下

<div class="cover-large">
  <img src="...">
</div>

(and如果不存在真实的图像,则用呈现伪图像的SVG标签来替换img标签)。
编辑:下面是表单中#book_cover元素的HTML源代码:

<div
  class="form-col col-wide dropzone dropzone-default dz-clickable"
  data-controller="coverdrop"
  data-coverdrop-max-file-size="3"
  data-coverdrop-max-files="1"
>
  <input data-coverdrop-target="input" data-direct-upload-url="http://127.0.0.1:3000/rails/active_storage/direct_uploads" type="file" name="book[cover]" id="book_cover" />
  <div class="dropzone-msg dz-message">
    <h3 class="dropzone-msg-title heading4 color-primary-dark">Drag cover image here or click to browse</h3>
    <span class="dropzone-msg-desc small color-primary-dark">3 MB file size maximum. Allowed are only image file types.</span>
  </div>
</div>

对应的CSS为type=file的input元素设置display=none。

cvxl0en2

cvxl0en21#

我可以在dropzone的官方网站上完成上传:https://www.dropzone.dev/js/

image = './spec/fixtures/images/space_sloth.jpg'
page.attach_file(image) do
  page.find('.dropzone').click
end

这对我在Dropzone网站上很有效。DOM中是否有什么东西可以通过单击来调用Windows资源管理器/ MacOS Finder文件选择器?您应该在代码块中使用该元素。

i2byvkas

i2byvkas2#

如果您使用的是较新版本的capabraya,您可以尝试:

find(".dropzone").drop(Rails.root.join("path/to/image"))

相关问题