2010-01-13 8 views
5

¿Existe una manera simple de mostrar todo el conjunto anidado al utilizar este complemento? Lo que me gustaría hacer es mostrar una lista desordenada de nodos raíz con otra lista desordenada dentro de cada elemento secundario que también contiene elementos secundarios, etc.Ruby on Rails - Completo conjunto de complementos anidados

Cualquier consejo apreciado.

Gracias.

Respuesta

4

Hay varias formas de hacerlo. Lo más simple es comenzar con las raíces y analizar cada nodo y sus hijos. Lo primero que haría es hacer una parcial para un margen de beneficio del nodo:

_your_model.html.erb

<li> 
    <%= your_model.name %> 

    <% unless your_model.children.empty? %> 
    <ul> 
     <%= render your_model.children %> 
    </ul> 
    <% end %> 
</li> 

Siguiente editar su vista para que los primeros nodos raíz se prestan:

<ul> 
    <% YourModel.roots.each do |node| %> 
    <%= render node %> 
    <% end %> 
</ul> 
+0

creo que tenía un par de errores tipográficos no Buddy. Creo que sería <% = render 'partial_name',: collection => your_model.children%> dentro del parcial; y en el ul más externo, harías <% = render 'partial_name',: collection => YourModel.roots%> y eliminarías por completo cada uno. – jacortinas

+0

Se corrigió el render interno a your_model.children. Si está utilizando una versión más nueva de los rieles, no necesita especificar el nombre del parcial siempre que le dé _nombre_de_su_modelo.html.erb. Tampoco es necesario que entre: colección. Rails determinará si se trata de una sola instancia o una matriz de objetos. –

0

usted puede obtener todo el conjunto con una consulta: Category.order("lft ASC")

Y si tiene :depth columna, voila! Una consulta para todo, solo escriba su vista para usar: profundidad.

+0

No es necesario que: columna de profundidad. El plugin conjunto anidado Awesome tiene un método de nivel. – xaph

+1

cada invocación de método de nivel de llamada db :( – Vlad

+0

Usando ['each_with_level (objects)'] (https://github.com/collectiveidea/awesome_nested_set/commit/9fcaaff3d6b351b11c4b40dc1f3e37f33d0a8cbe) debería evitar múltiples consultas. – fractious