当我创建与帖子相关的评论时,我收到此错误::
我的评论控制器::
class CommentsController < ApplicationController
def new
@comments = Comment.new
end
def create
@post = Post.find (params[:post_id])
@comments = @post.comments.create(params[:comments].permit(:commenter, :body))
redirect_to post_path(@post)
end
end
//评论的表格///
<strong>Title:</strong>
<%= @post.Title %>
</p>
<p>
<strong>Text:</strong>
<%= @post.Text %>
</p>
<%= form_for([@post, @post.comments.build]) do |f| %>
<p>
<%= f.label :commenter %><br />
<%= f.text_field :commenter %>
</p>
<p>
<%= f.label :body %><br />
<%= f.text_area :body %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
我在这一行收到错误::
@comments = @post.comments.create(params[:comments].permit(:commenter, :body))
请指出我错在哪里..
一次编辑::我的实际错误陈述::
CommentsController中的NoMethodError #create
答案 0 :(得分:3)
使用强参数的正确语法是
params.require(:comments).permit(:commenter, :body)
但我认为params将包含comment
而不是comments
所以你应该使用
params.require(:comment).permit(:commenter, :body)
答案 1 :(得分:2)
好吧,正如错误消息所述,params[:comments]
为零。
您应该使用params.require(:comments).permit(:commenter, :body)
,以便在comments
不存在的情况下,它将不再继续使用。
此外,提交的实际参数是comment
,而不是comments
。您可以通过查看日志中提交的参数来验证这一点。