PostsController #create中的ActiveModel :: MassAssignmentSecurity :: Error

时间:2012-05-16 17:00:32

标签: ruby-on-rails ruby

我差不多在http://guides.rubyonrails.org/getting_started.html完成了第11步。 虽然我的标签有问题,但在尝试创建新帖子时我会继续这样做。

ActiveModel :: MassAssignmentSecurity :: PostsController中的错误#create

无法批量分配受保护的属性:tags_attributes Rails.root:/ Users / david / blog

应用程序跟踪|框架跟踪|完整追踪 app / controllers / posts_controller.rb:46:在new' app/controllers/posts_controller.rb:46:in创建' 请求

参数:

    {"post"=>{"name"=>"David",
    "content"=>"Foobar",
    "title"=>"Programmer",
    "tags_attributes"=>{"0"=>{"name"=>"Tea,
    Cake"}}},
    "utf8"=>"✓",
    "commit"=>"Create Post",
    "authenticity_token"=>"MhvAkAPcAey1Z4YXy7nKFmW/wETlu+USSvWOEBBN4po="}

我已经遍历了包含标签实现的每一行代码,我无法弄明白。对我应该寻找的一些指导?

谢谢。

2 个答案:

答案 0 :(得分:3)

在您的模型中,您需要将tag_attributes添加到attr_accessible来电。

例如:

class User < ActiveRecord::Base
  attr_accessible :tags_attributes
end

如果您已经调用过一次,则可以将此字段添加为方法的参数,或者再次调用。两种选择都是等价的。

必须指定所有可访问的参数在几个月之前才是默认值 本指南已更新,以反映默认更改。但是尚未部署新版本,这就是未指定的原因。

请参阅Security: Mass Assignment

答案 1 :(得分:0)

你可以试试这个,
在PostsController模型中,添加表单中使用的所有属性,例如

 class PostsController < ActiveRecord::Base
   attr_accessible :name, :content, :title
   ...
   ...
 end

它对我有用。