0

所以我开始掌握permit(Rails 新手,当然还有 Rails 4)。

当我通过路径传递参数时,例如form_for(@comment, :url => post_comments_path(@post.id))

日志显示它正在以这种格式传递:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"UKBczLBwbh/AF2XSTlWmPJcFEcgTSXA9PBE6VP6sD4k=", 
"user"=>{"first_name"=>"Jim Friner", "email"=>"jfriner@gmail.com"}, "comment"=>{"content"=>"Hey dudez"},
"commit"=>"Create Comment", "post_id"=>"1"}

如您所见,帖子 ID 没有被用户或评论包装。它不是散列中的散列。我找到的关于如何使用许可的大多数教程和答案都假定它是提交的表单,因此在useror 或comment. 他们提出以下建议:

params.require(:user).permit(:first_name, :email)

但是在这种情况下,没有什么可用于 require 的,所以我想我的问题是,我只是省略 require 并且它应该可以工作还是我做这样的事情:

params.require(:post_id).permit(:post_id)

要不就

params.permit(:post_id)

谢谢!

4

1 回答 1

3

Rails 4 中的强参数是 的替代品attr_accessible,因此并不意味着过滤所有参数,只是那些由表单提交以阻止模型设置某些属性的参数。

在这种情况下,该post_id参数用于路由,因此您可以通过 a 对其进行过滤,before_action但不能使用强参数来执行此操作。

于 2013-09-19T16:47:25.283 回答