我的代码出现此错误
我在show.html.haml中将此行出现此错误以进行评论
= link_to comment.user_name, user_path(comment.user_id)
在我的创建动作中,我有这个
def create
@comment = @post.comments.new(comment_params)
@comment.user_name = current_user.nickname
@comment.user_id = current_user.id
if @comment.save!
redirect_to @post
else
flash.now[:danger] = "error"
end
end
感谢您的帮助
答案 0 :(得分:2)
根据您的帖子视图,您为当前帖子构建一个空评论:
= render 'comments/form', comment: @post.comments.build
这就是为什么当您在@post.comments.each
上进行迭代时,@post
会有一个未保存的内置注释,没有用户。
您可以通过添加以下条件来解决此问题:
- @post.comments.each do |comment|
- unless comment.new_record?
.div
%hr
= link_to comment.user_name, user_path(comment.user_id)
...
或者您可以添加您的PostsController:
def show
@comment = Comment.new
end
并将= render 'comments/form', comment: @post.comments.build
更改为= render 'comments/form', comment: @comment
这样@post.comments
为空,您可以对其进行迭代而不会丢失id错误。
答案 1 :(得分:0)
显示的错误missing required keys: [:id]
表示user_path
的参数未如我们期望的那样传递。 comment.user_id
可能是nil
,或者您可能必须明确指定= link_to comment.user_name, user_path(id: comment.user_id)