2011-08-24 73 views
5

我想显示注释树。我在另一种观点认为移动评论格,并在_comments.html.haml写道下一行:在Rails 3中递归渲染集合

= render :partial => 'single_comment', :collection => @post.comments.where(:parent_id => nil) 

_single_comments.html.haml

- if comment.id != nil 
    .comment 
    .meta 
     = comment.name 
     says 
    .body 
     = comment.text 
    .answers 
    = render :partial => 'posts/single_comment', :collection => @post.comments.where(:parent_id => comment.id) 

但浏览器告诉我一个错误:

undefined local variable or method `comment' for #<#<Class:0x00000004e39280>:0x00000004e2f398> 
Extracted source (around line #1): 

1: - if comment.id != nil 
2: .comment 
3:  .meta 
4:  = comment.name 

我试图添加:as => comment在第一行,但它不起作用。所以作为使用@comment部分。 也许这是根本错误的?

+0

请按照@ Draiken的解决方案或将部分'comment'部分更改为'single_comment',因为这是变量按照惯例命名的。 – rubish

回答

8

您必须在两个渲染线上添加:as => :comment,请记住正在渲染的答案会再次渲染此相同的部分,因此它们也会尝试渲染答案。

尝试在注释和答案渲染部分上添加:as => :comment

+0

谢谢,它的工作原理! – zishe

+0

也许标记答案是正确的并为它评分? :) – Draiken

+0

对不起,我没有足够的声誉:(我不知道如何赚取它,我还不能回答任何问题:) – zishe