我正在使用评论脚手架制作博客,但我收到了一个错误。此属性用于使用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
标有星号的行是突出显示的行无效。关于如何解决这个问题的任何想法?
答案 0 :(得分:1)
Rails 4引入了Strong Parameters。将属性传递给质量赋值函数(在本例中为build)时,需要将属性明确标记为安全。
Rails 3采用了不同的方法,您可以在视图中定义attr_protected
和attr_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的说法回答。