使用strong_params并获得ActiveModel::ForbiddenAttributesError
异常时,如何找出被禁止的属性?我刚刚从attr_accessible
切换,调试消息通常非常好,但切换到强params时没有。
我收到此错误:
ActiveModel::ForbiddenAttributesError in SnippetsController#create
这是一个嵌套模型。
def snip_params
params.require(:snippet).permit(:content, :approved, :user_id, :book_id)
end
在我使用的父母中
has_nested_attributes :snippets
创建
def create
@snippet = @book.snippets.create(snip_params)
@snippet.user = current_user
if @snippet.save
redirect_to @book
flash[:success] = "Snippet submitted and awaiting approval."
else
flash[:base] = "Someone else has submitted a snippet, please try again later"
redirect_to @book
end
end
参数内容:
{"utf8"=>"✓",
"authenticity_token"=>"bTRSwFRIhN3l3DkkWPtLzpoQHYD+CezmJQLw8Oz5+3g=",
"snippet"=>{"content"=>"<p>AAAAAAAAAAAAA</p>\r\n"},
"commit"=>"Create Snippet",
"book_id"=>"1"}
答案 0 :(得分:2)
最初禁止所有属性。仅当您不允许任何属性时才会引发此异常。如果您允许某些而不允许其他人,则日志输出会告诉您哪些参数不被允许。
params = ActionController::Parameters.new(name: 'Bob', age: 24)
#params are usually set automatically in the controller
Person.new(params)
以上将引发异常
Person.new(params.permit(:name))
这将创建名为“Bob”的人,日志输出也将包含:
Unpermitted parameters: age
答案 1 :(得分:0)