Рекурсивный рендеринг коллекции в Rails 3 - PullRequest
5 голосов
/ 24 августа 2011

Я хочу показать дерево комментариев. Я переместил комментарий div в другое представление и написал следующую строку в _comments.html.haml:

= 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 в частичном. Может быть, это в корне неправильно?

1 Ответ

8 голосов
/ 24 августа 2011

Вы должны добавить :as => :comment в обе строки рендеринга, помните, что ответы, которые отображаются, снова визуализируют этот же фрагмент, поэтому они также попытаются отрисовать ответы.

Попробуйте добавить :as => :comment как к комментариям, так и к части визуализации ответов.

...