我试着按照我找到的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。
2条答案
按热度按时间cvxl0en21#
我可以在dropzone的官方网站上完成上传:https://www.dropzone.dev/js/
这对我在Dropzone网站上很有效。DOM中是否有什么东西可以通过单击来调用Windows资源管理器/ MacOS Finder文件选择器?您应该在代码块中使用该元素。
i2byvkas2#
如果您使用的是较新版本的capabraya,您可以尝试: