我正在学习使用Carrierwave的第一步,显然是上传一张图片,看看它是否有效地插入到数据库中。一个可能很重要的细节是,此代码是用Rails Engine编写的,并命名为(Wanker
)
我按照gem的指示生成了一个上传器,一切正常(Wanker::PicturesUploader
)
我创建了一个带有CompanyDetailImage
字符串字段(MySQL)的模型picture
,并添加了这一行
mount_uploader :picture, Wanker::PicturesUploader
然后我做了一个视图和一个表格
<%= f.fields_for [:wanker, @company, @company_detail, @company_detail_images] %>
<%= i.label :picture %>
<%= i.file_field :picture %>
<% end %>
控制器中的
params[:company][:company_detail_image]["picture"]
将在其中[#<ActionDispatch::Http::UploadedFile:0x007fe613b81f40
@content_type="image/png",
@headers=
"Content-Disposition: form-data; name=\"company[company_detail_image][picture][]\"; filename=\"Screen Shot 2015-02-04 at 8.18.58 PM.png\"\r\nContent-Type: image/png\r\n",
@original_filename="Screen Shot 2015-02-04 at 8.18.58 PM.png",
@tempfile=# <File:/var/folders/2w/lw3glw5d58g25qvv4cx6yk0m0000gn/T/RackMultipart20150213-22947-np2et6>>]
这对我来说似乎很好。但是当我尝试这个
@company_detail_image = Wanker::CompanyDetailImage.new
@company_detail_image.picture = params[:company][:company_detail_image]["picture"]
@company_detail_image.save!
它返回这个
ActiveRecord::RecordInvalid: Validation failed: Picture You are not allowed to upload nil files, allowed types: jpg, jpeg, gif, png
有人知道为什么它不捕捉图片吗?感谢大伙们 ;)
最佳答案
尝试这个:
@company_detail_image.picture = params[:company][:company_detail_image]["picture"].first
这是因为您的
["picture"]
参数正在返回一个数组,而不是对象本身(这是该数组中的第一项)。关于mysql - 载波无法使用引擎保存图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28508556/