强参数:ActiveModel::ForbiddenAttributesError

Strong Parameters: ActiveModel::ForbiddenAttributesError

假设我有一个 PostsController 并且我有一个 Post 模型和 Comment 模型。我允许在 Post 上发表评论,所以在我的 posts/show 上我放了以下内容

 # 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)

我尝试在 permit 上添加 :comment 但它引发了 ActiveModel::ForbiddenAttributesError

根据您的评论,您需要做的是:

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

并允许它像:

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

我得到了强参数 ActiveModel::ForbiddenAttributesError 修复如下:

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