2011-08-24 6 views
5

でコレクションを再帰的レンダリングします。私は別のビュー内のコメントのDIVを移動し、_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

どちらかそれは変数が慣例によって命名されたものであるとして、 'single_comment'ように部分的にDraikenの溶液または変更' comment' @従ってください。 – rubish

答えて

8

あなたは、行のレンダリングの両方で:as => :commentを追加し、再びこの同じ部分をレンダリングしているので、彼らはあまりにも答えをレンダリングしようとするレンダリングされている答えを覚えておく必要があります。

は、コメントと一部のレンダリングの答えの両方で:as => :commentを追加してみてください。

+0

ありがとう、それは動作します! – zishe

+0

答えを正しいとマークして評価するのはどうですか? :) – Draiken

+0

は申し訳ありませんが、私は十分な評判を持っていない:(私はそれを獲得する方法を知りません。私にはまだ質問にお答えすることはできません:) – zishe

関連する問題