我的应用程序中有一个功能测试,我测试上传文件。所以我有这样的事情:
attach_file :input_id, Rails.root + "spec/fixtures/sample.jpg"
click_button "Upload"
我的“期望”总是失败,我将一个binding.pry添加到我的控制器来检查原因。事实证明传递给输入文件的是一个字符串。
有没有人遇到同样的问题?有关如何解决问题的任何建议?现在已经坚持这个问题2天了。
修改
忘记提及,输入文件是多种类型
f.attachment_field :input_field, multiple: true
答案 0 :(得分:2)
试试这个:
attach_file('Image', "spec/files/images/yourtestimg.jpg")
显然,在路径中创建这些文件夹。对不起,我宁愿过度解释,也不愿意解释。 yourtestimg.jpg
指的是我放在该文件夹中的实际图像。
快速侧面说明,以上是正确的方法,但有一次我遇到了失败,因为它没有认识到' Image'。在这种情况下,右键单击并检查上载按钮的元素,并查看该字段的名称。在失败中,我所说的字段是名称" post_image'同样,字幕字段被命名为&post; caption。'。一旦我将图像换成了'post_image'它过得很好。
贾斯汀
答案 1 :(得分:2)
我在评论中询问了一个问题,即#attachment_field是否来自重新发送,而你是使用直接模式还是预先签名模式。如果你的答案是肯定的,那么节省时间:
使用直接或预先签名模式时反映不会上传带有表单的文件,而是使用ajax将文件提交到自己的sinatra应用程序,S3等(取决于使用的后端),然后提交id文件上传在隐藏字段中添加到表单中。在这种情况下,你会期望它是一个字符串。您可以详细了解https://github.com/refile/refile#4-rails-helpers和https://github.com/refile/refile#5-javascript-library