强参数:ActiveModel :: ForbiddenAttributesError

问题描述

让我们说我有一个PostsController,我有一个Post模型和Comment模型。我允许在帖子上发表评论,因此在我的帖子/节目中,我发表了以下内容

 # routes.rb
 resource :post do 
   member do 
      post :add_comment
    end
 end

 # post.rb
 has_many :comments

 # comment.rb
 belongs_to :post
<%= form_with(model: @post,url: add_comments_post_path) do |form| %>
   <%= form.text_area :body %>
<% end %>
# posts_controller

def add_comment
  post = Post.find(params[:id])
  post.comments.create(params[:comment])
end

private 
params.require(:post).permit(:title,:body)

我尝试在许可上添加:comment,但是却提高了ActiveModel::ForbiddenAttributesError

解决方法

我像这样修复了强参数ActiveModel :: ForbiddenAttributesError:

params.require(:post).permit(:title,:body,comment_attributes: [:body])
,

根据您的评论,您必须执行以下操作:

post = Post.find(params[:id])
post.comments.create(comment_params)

并允许它像

private
def comment_params
  params.require(:comment).permit(:title,:body)
end

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...