2011-08-24 11 views
5

Quiero mostrar el árbol de comentarios. Me moví comentario div en otro punto de vista, y escribió la siguiente línea en _comments.html.haml:Representación recursiva de una colección en 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) 

Pero navegador me muestra un error:

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 

He intentado añadir :as => comment en primera línea, pero no funciona. Entonces como usar @comment en parcial. ¿Quizás es fundamentalmente erróneo?

+0

O siga la solución de @ Draiken o cambie 'comment' en parcial para que sea' single_comment' ya que así es como se designa la variable por convención. – rubish

Respuesta

8

Debe agregar :as => :comment en ambas líneas de representación, recuerde que las respuestas que se están representando están volviendo a mostrar esta misma parcialidad, por lo que intentarán procesar las respuestas también.

Intente agregar el :as => :comment tanto en los comentarios como en la parte de representación de respuestas.

+0

¡Gracias, funciona! – zishe

+0

¿Tal vez marque la respuesta como correcta y califíquela? :) – Draiken

+0

Lo siento, no tengo suficiente reputación :(No sé cómo ganarlo. Todavía no puedo responder ninguna pregunta :) – zishe