0

我遵循 michale hartl 的 rails 教程,然后我想扩展它,所以我尝试集成 thumbs_up gem。我能够为帖子和评论投票,我感到非常自豪。但后来我想在我的 UI 上做一点工作。我不喜欢所有用于添加新评论的表格都位于帖子所附评论的提要下方。所以我认为我所要做的就是改变我的部分的顺序

由此

<%= render partial: 'comments/comment', collection: my_item.comments, as: :comment %>
<%= render :partial => "comments/form", :locals => { :cur_post => my_item } %>

对此

<%= render :partial => "comments/form", :locals => { :cur_post => my_item } %>
<%= render partial: 'comments/comment', collection: my_item.comments, as: :comment %>

它会起作用的。但遗憾的是,情况并非如此。当我重新排序它们时,我得到了这个错误。

No route matches {:action=>"vote_up", :controller=>"comments", :id=>#<Comment id: nil, content: nil, user_id: nil, post_id: 14, created_at: nil, updated_at: nil>}

我可以删除任何一个部分,一切都会正常工作,所以我不确定为什么评论上方的表格会导致错误。

这是一个要点的链接

任何帮助都会很棒。

4

1 回答 1

1

我相信这个问题来自这条线

<%= form_for([cur_post, cur_post.comments.build]) do |f| %>

当这首先发生时,它会在 cur_post.comments 上构建一个新的评论。现在出现问题,当您渲染“评论/评论”时,新构建的评论没有保存。当您将模型传递给这样的 url 助手时,Rails 期望:

vote_up_comment_path(comment)

该对象在数据库中(AFAIK)

您应该能够通过不构建到comments关联中来解决此问题

<%= form_for([cur_post, Comment.new]) do |f| %>

否则,在您的评论/评论中,您可以检查是否comment.new_record?属实并进行相应处理。

于 2012-10-01T23:34:49.030 回答