Carrierwave无法使用引擎保存图像
Carrierwave can't save the image, using an engine
我正在学习使用 Carrierwave 第一步显然是上传图片并查看它是否有效地插入到数据库中。一个可能很重要的细节是,此代码是在 Rails 引擎中编写的,并且命名空间为 (Wanker
)
我按照 gem 的说明生成了一个上传器,一切顺利 (Wanker::PicturesUploader
)
我用 picture
字符串字段 (MySQL) 创建了一个模型 CompanyDetailImage
并添加了这一行
mount_uploader :picture, Wanker::PicturesUploader
然后我做了一个view和一个form
<%= 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!
它returns这个
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"]
参数返回的是数组而不是对象本身(这是该数组中的第一项)。
我正在学习使用 Carrierwave 第一步显然是上传图片并查看它是否有效地插入到数据库中。一个可能很重要的细节是,此代码是在 Rails 引擎中编写的,并且命名空间为 (Wanker
)
我按照 gem 的说明生成了一个上传器,一切顺利 (Wanker::PicturesUploader
)
我用 picture
字符串字段 (MySQL) 创建了一个模型 CompanyDetailImage
并添加了这一行
mount_uploader :picture, Wanker::PicturesUploader
然后我做了一个view和一个form
<%= 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!
它returns这个
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"]
参数返回的是数组而不是对象本身(这是该数组中的第一项)。