问题描述
让我们说我有一个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