Rails入门教程:5.7展示帖子——没有禁止属性错误



我一直在学习Rails教程:

http://guides.rubyonrails.org/getting_started.html

第5.7节告诉我应该期待一个ActiveModel::ForbiddenAttributesError

问题是,我不明白这个错误。它在没有permit关键字的情况下工作。

我的创建方法如下:

  def create
    @post = Post.new(post_params)
    @post.save
    redirect_to @post
  end

我使用的是Rails 4.0和Ruby 2.0。知道为什么强参数安全功能不起作用吗?

文档实际上是误导性的,你是对的。

如果您按照第5.6章所示对控制器进行编码

def create
  @post = Post.new(post_params)
  @post.save
  redirect_to @post
end
private
  def post_params
    params.require(:post).permit(:title, :text)
 end

您已经允许使用参数CCD_ 1和CCD_。

下一章(5.7)假设您还没有使用permit-方法。

如果你想把2号线改成:

 @post = Post.new(post_params)

如屏幕截图所示,将抛出错误。此外,第5.7章中的"修复"并没有像您那样定义新的私有方法post_params,而是内联应用修复。

@post = Post.new(params[:post].permit(:title, :text))

您的post_controller:中有这段代码吗

private
 def post_params
   params.require(:post).permit(:title, :text)
 end

根据rails 4中的新安全措施约定http://edgeguides.rubyonrails.org/action_controller_overview.html#strong-参数如果你有这个,那就意味着你允许在创建和更新模型时使用这些参数。

正如你所说的,你正在学习本教程http://guides.rubyonrails.org/getting_started.html#saving-控制器中的数据

你的控制器里有这个代码。

Doh。。。逐字逐句地跟在文档后面--是的,这是有误导性的。

许可证已在post_params方法中:

def post_params
  params.require(:post).permit(:title, :text)
end

最新更新