10

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

我有一个模型“图像”,模型中有一个附加文件“上传”:

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 在开发环境中失败的原因——它应该显示错误但它没有——这将是一个很好的补丁来简化开发。或者也许其他人都得到了我错过的东西!非常感谢您的帮助。

4

2 回答 2

9

I understand what happened here now - and will leave this up in the hope it helps someone else. I was porting code from a rails 3 project and missed the line that created the image:

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

In rails 4 this is incorrect (I beleive). I updated to

@image = current_user.images.new(image_params)

and that solved my problem.

于 2013-07-20T23:24:08.827 回答
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
于 2014-03-16T14:22:48.507 回答