Ruby on rails 线程注释-未定义的方法“children';为WillPaginate

Ruby on rails 线程注释-未定义的方法“children';为WillPaginate,ruby-on-rails,Ruby On Rails,下面的问题已经解决了,我在评论的末尾加了一个“s”,本来应该是评论,但是在这篇文章的底部出现了一个新问题 我正试图通过以下对此人问题的回答,为我现有的评论系统获取线程评论: 当我尝试访问我的文章展示页面时,我得到以下错误:未定义的方法'children'for# 以下是我的文章展示页面中存在问题的视图: <div id="comment <%= comment.id %>"> <%= comment.title %> | <%= link_to

下面的问题已经解决了,我在评论的末尾加了一个“s”,本来应该是评论,但是在这篇文章的底部出现了一个新问题

我正试图通过以下对此人问题的回答,为我现有的评论系统获取线程评论: 当我尝试访问我的文章展示页面时,我得到以下错误:未定义的方法'children'for# 以下是我的文章展示页面中存在问题的视图:

<div id="comment <%= comment.id %>">
  <%= comment.title %>
  | <%= link_to "Edit Comment", edit_article_comment_path(@commentable, comment) %>
  | <%= link_to 'Delete Comment', [@commentable, comment], :confirm => "Are you sure?", :method => :delete %><br />
  <%= comment.content %><br />
  **<%= render :partial => 'comments/comment', :collection => @comments.children %>**
  <%= comment.user.name %><br /><br />
</div>

| 
|“您确定吗?”,:method=>:delete%>

**'评论/评论',:collection=>@comments.children%>**

渲染部分有问题。 如果我从评论中去掉children部分,我会在控制台中看到: 递归从未停止过。我得到的结果是:呈现评论/_form.html.erb(14.9ms)呈现评论/_comment.html.erb(2.0ms)呈现评论/_comment.html.erb(7.3ms)呈现评论/_comment.html.erb(12.3ms)呈现评论/_comment.html.erb(17.9ms)呈现评论/_comment.html.erb(22.3ms)呈现评论/_comment.html.erb(26.8ms)呈现评论/_comment.html.erb(31.6ms)呈现评论/_comment.html.erb(36.2ms)。。。。 我不知道为什么它一直在渲染。 所有评论都没有子项,因此应该停止。 以下是文章的“展示”部分:

def秀 @article=article.find(参数[:id]) @commentable=Article.find(参数[:id]) @comments=@commentable.comments.paginate(:page=>params[:page]) @comment=comment.new @title=@article.title 结束

我唯一的解释是,可能没有任何儿童评论,因此will_paginate不知道如何处理它,因此它向我抛出了一个错误


新问题,我在发送评论时遇到问题。我正在为我的评论使用多态关联,以便它们可以用于不同的模型(文章、配置文件、图片等),但我不知道如何在我的视图中创建路由路径。 以下是我现在拥有的:

<div id="comment <%= comment.id %>">
  <%= comment.title %>
  | <%= link_to "Permalink", article_comment_path(@commentable, comment) %>
  | <%= link_to "Reply", new_article_comment_path(@commentable, @comment_child) %>
  | <%= link_to "Edit Comment", edit_article_comment_path(@commentable, comment) %>
  | <%= link_to 'Delete Comment', [@commentable, comment], :confirm => "Are you sure?", :method => :delete %><br />
  <%= comment.content %><br />
  <%= comment.user.name %><br /><br />
  <%= render :partial => 'comments/comment', :collection => @comment.children %>
</div>

| 
| 
| 
|“您确定吗?”,:method=>:delete%>



'评论/评论',:collection=>@comment.children%>
存在大量的路径错误,这些错误对其他模型不起作用。我正在使用:article_comment_path、new_article_comment_path和edit_article_comment_path。顺便说一句,这是for-each循环的内部,它在注释数组上循环。我想要“可注释的注释路径”或“新的可注释的注释路径”,这样我就可以在我的其他模型中使用它

还有一个简单的问题,这会修复我的“回复”链接吗?我不确定我是否做得对。我希望回复链接在评论中创建评论


非常感谢。

您建议的父id
是对对象的整数引用。要获取对象
a
的子对象,您需要查找具有
a.id的
parent\u id
的所有对象


至于呈现的问题:
@comments
是一个注释对象数组-您基本上通过使用
paginate
请求了一页注释。我猜您希望自己呈现注释,在这种情况下,
:collection=>@comments
将完成这项工作。这只意味着对集合中的每个项目使用分部。然后,partial将根据链接的答案呈现每条评论的子评论。

edit:oops,不知道enter发布了回复。递归从未停止过。我得到的结果是:呈现评论/_form.html.erb(14.9ms)呈现评论/_comment.html.erb(2.0ms)呈现评论/_comment.html.erb(7.3ms)呈现评论/_comment.html.erb(12.3ms)呈现评论/_comment.html.erb(17.9ms)呈现评论/_comment.html.erb(22.3ms)呈现评论/_comment.html.erb(26.8ms)呈现评论/_comment.html.erb(31.6ms)呈现评论/_comment.html.erb(36.2ms)。。。。我不知道为什么它一直在渲染。所有注释都没有子注释,因此应该停止。啊,您是否已将部分中的
:collection=>注释替换为我答案中的代码?我指的是顶层视图中的代码。老实说,我很确定它应该是
注释。部分也应该是children
而不是
注释。children
。哈哈,是的,注释中的's'是个愚蠢的错误。它只能是“评论”。我忘了,它是在“注释中的每个注释”循环中。谢谢另外,我还有另一个问题,我将编辑包含相关信息的主要帖子。你最好问一个新问题,然后再参考这个问题,而不是在上面附加另一个问题。