强参数: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])
假设我有一个 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])