保存回形针图像时未允许的参数

时间:2014-06-04 22:19:22

标签: ruby-on-rails ruby ruby-on-rails-4 paperclip

我对params有些麻烦或者我认为,我已经看过Ruby on rails Unpermitted parameters: image并且它没用了

我有我的pictures_controller.rb

def create 
  @picture = Picture.new(picture_params) 
  if @picture.save 
    #ok 
  else 
   #error
  end
end

private
  def picture_params
    params.require(:picture).permit(:project_id, :picture )
  end

在我的参数中

Parameters: {"utf8"=>"✓", "picture"=>{"project_id"=>"10", "picture"=>[#<ActionDispatch::Http::UploadedFile:0x007f9e9ccd1378 @tempfile=#<Tempfile:/tmp/RackMultipart20140604-18563-1ce54ta>, @original_filename="apple-touch-icon.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"picture[picture][]\"; filename=\"apple-touch-icon.png\"\r\nContent-Type: image/png\r\n">]}}
Unpermitted parameters: picture

param project_id已保存,但回形针的字段(文件名,文件大小和文件类型)不是。

IN模型

has_attached_file :picture, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png"
validates_attachment_content_type :picture, :content_type => ["image/jpg", "image/jpeg", "image/gif", "image/png"]

图片不是嵌套属性,project_id只是我在文本字段中获得的值,因此根本没有嵌套模型,它是一个简单的表单,包含两个字段,project_id和一个文件字段叫图片。

1 个答案:

答案 0 :(得分:1)

我解决了它,似乎在我的params关键图片中,图像的数据是一个数组

"picture"=>[#<ActionDispatch::Http::UploadedFile:0x007f9e9ccd1378 @tempfile=#<Tempfile:/tmp/RackMultipart20140604-18563-1ce54ta>, @original_filename="apple-touch-icon.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"picture[picture][]\"; filename=\"apple-touch-icon.png\"\r\nContent-Type: image/png\r\n">]}

所以我只是做了一个.first来获得价值,我认为这不是最好的方式,但我会找到一种更清洁的方式,至少现在我知道什么是错误