使用ActiveStorage附加文件时出错“找不到或生成Blob:预期可附加”得到了ActionDispatch :: Http :: UploadedFile

问题描述

我正在尝试从编辑器插件中保存图像。 参数是:

<ActionController::Parameters {"file"=>[#<Actiondispatch::Http::UploadedFile:0x00007fa78416dfe0 @tempfile=#<Tempfile:/var/folders/gt/k_vyp2g13zl7l89pzl9y44vc0000gp/T/RackMultipart20200918-91605-ob1sq1.jpg>,@original_filename="folk.jpg",@content_type="image/jpeg",@headers="Content-disposition: form-data; name=\"file[]\"; filename=\"folk.jpg\"\r\nContent-Type: image/jpeg\r\n">],"controller"=>"admin/medias","action"=>"create"} permitted: false>

因此,在我的操作中,我使用附件建立了记录

@media = Media.new
@media.file = params[:file]
# @media.file.attach params[:file]  # same error
@media.save!

我得到了错误

ArgumentError Exception: Could not find or build blob: expected attachable,got [#<Actiondispatch::Http::UploadedFile ..

如何将提交的文件附加到@media记录?

解决方法

提交的params[:file]是文件数组。

如果编辑器确实可以上传多个图像,请确保将Media类配置为使用has_many_attached而不是has_one_attached

如果仅上传一个图像,请更改编辑器或使用数组中的第一项。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...