Ruby on rails 如果我先放置表格,则发送问题

Ruby on rails 如果我先放置表格,则发送问题,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我遵循michale hartl的rails教程,然后我想扩展它,所以我尝试集成thumbs_up gem。我能够为帖子和评论进行投票,我感到非常自豪。但后来我想在我的UI上做一点工作。我不喜欢所有用于添加新评论的表单都放在贴在帖子上的评论提要下面。所以我想我所要做的就是改变我的部分的顺序 由此 <%= render partial: 'comments/comment', collection: my_item.comments, as: :comment %> <%= re

我遵循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 } %>

“评论/表格”,:locals=>{:cur\u post=>my\u item}%>
对此

<%= render :partial => "comments/form", :locals => { :cur_post => my_item } %>
<%= render partial: 'comments/comment', collection: my_item.comments, as: :comment %>
“评论/表单”,:locals=>{:cur\u post=>my\u item}%>
这会奏效的。但遗憾的是,情况并非如此。当我重新排列它们时,我得到了这个错误

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>}
没有路由匹配{:action=>“投票”、:controller=>“评论”、:id=>#}
我可以删除任何部分,所有内容都可以,所以我不确定为什么评论上面的表单会导致错误

这里是一个链接到


任何帮助都会很好

我相信问题来自这一行

<%= form_for([cur_post, cur_post.comments.build]) do |f| %>
对象是否在数据库中(AFAIK)

您应该能够通过不在
注释中构建
关联来绕过此问题

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


否则,在您的评论/评论中,您可以检查
comment.new\u record?
是否正确,并进行相应处理。

太棒了,这两种解决方案都有效。我认为这与表单中评论的潜力有关。但我不知道如何防范它。在这两种解决方案中,哪一种更正确?任意一种。第一个。您可以在表单中使用
注释.new
<%= form_for([cur_post, Comment.new]) do |f| %>