博客评论脚手架上的ActiveModel :: ForbiddenAttributesError

时间:2014-01-03 19:34:13

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2 ruby-on-rails-4

我正在使用评论脚手架制作博客,但我收到了一个错误。此属性用于使用rails 3.2,但使用4.0时,它停止工作。以下是提取的来源:

 def create
@post = Post.find(params[:post_id])
**@comment = @post.comments.build(params[:comment])**
respond_to do |format|
if @comment.save 

标有星号的行是突出显示的行无效。关于如何解决这个问题的任何想法?

2 个答案:

答案 0 :(得分:1)

Rails 4引入了Strong Parameters。将属性传递给质量赋值函数(在本例中为build)时,需要将属性明确标记为安全。

Rails 3采用了不同的方法,您可以在视图中定义attr_protectedattr_accessible

使用强参数时,禁止将动作控制器参数用于活动模型批量分配,直到它们被列入白名单。这意味着您必须有意识地选择允许批量更新的属性,从而防止意外暴露不应暴露的属性。

@post.comments.build(comment_params)

其中comment_params定义为

def person_params
  params.require(:comment).permit(...) # List here whitelisted params
end

请务必阅读以下资源

答案 1 :(得分:0)

您可以将 gem'protected_attributes'添加到您的Gemfile中,运行bundle install,它应该可以正常工作。

#Gemfile

gem 'protected_attributes'

文档在这里: https://github.com/rails/protected_attributes


但我认为你应该按照Simone Carletti的说法回答。