Rails中的回形针4 - 强参数禁止属性错误

时间:2013-07-19 03:36:17

标签: paperclip ruby-on-rails-4 strong-parameters paperclip-validation

在Rails 4中出现Paperclip上传问题 - ForbiddenAttributesError失败(强参数验证)。拥有最新的回形针宝石和最新的rails 4宝石。

我有一个模型“Image”,模型中有附加文件“upload”:

has_attached_file :upload, :styles => { :review => ["1000x1200>", :png], :thumb => ["100x100>", :png]}, :default_url => "/images/:style/missing.png"

图像模型是用脚手架创建的,我添加了回形针迁移。表单部分已更新为使用

f.file_field :upload

表单生成一组典型的回形针参数,图像参数包含上传。我也在图像模型中传递了transaction_id,因此应该允许它。但就是这样 - 图像和交易ID。

我希望能够在我的控制器中将以下内容写入白名单 - 但它失败了:

def image_params
  params.require(:image).permit(:transaction_id, :upload)
end

所以我更明确 - 但也失败了:

def image_params
  params.require(:image).permit(:transaction_id, :upload => [:tempfile, :original_filename, :content_type, :headers])
end

我有点沮丧的是,Rails 4没有向我展示ForbiddenAttributesError在开发环境中失败的原因 - 它应该显示错误但它没有 - 将是一个很好的补丁来简化开发。或者也许其他人都得到了我所缺少的东西!非常感谢你的帮助。

2 个答案:

答案 0 :(得分:9)

我理解现在发生的事情 - 并且希望它能够帮助别人。我正在从rails 3项目移植代码并错过了创建图像的行:

@image = current_user.images.new(params[:image])

在轨道4中,这是不正确的(我相信)。我更新到了

@image = current_user.images.new(image_params)

这解决了我的问题。

答案 1 :(得分:1)

看起来你的第一个应该有效。这就是我用于我的项目。

class GalleriesController < ApplicationController

  def new
    @gallery = Gallery.new
  end

  def create
    @user.galleries.new(gallery_params)
  end

  private

  #note cover_image is the name of paperclips attachment filetype(s)
  def gallery_params
    params.require(:gallery).permit(:cover_image)
  end
end