2010-01-13 4 views
5

Gibt es eine einfache Möglichkeit, den gesamten verschachtelten Satz anzuzeigen, wenn Sie dieses Plugin verwenden? Was ich tun möchte, ist eine ungeordnete Liste von Wurzelknoten mit einer anderen ungeordneten Liste in jedem Kind, das auch Kinder und so weiter enthält?Ruby on Rails - Geniales verschachteltes Set-Plugin

Jeder Ratschlag geschätzt.

Danke.

Antwort

4

Es gibt einige Möglichkeiten, dies zu tun. Das einfachste ist, einfach mit den Wurzeln zu beginnen und jeden Knoten und seine Kinder zu analysieren. Das erste, was ich tun würde, ist eine teilweise für eine Markup der Knoten machen:

_your_model.html.erb

<li> 
    <%= your_model.name %> 

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

Weiter bearbeiten Sie Ihre Ansicht so, dass die ersten Wurzelknoten wiedergegeben werden:

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

Ich denke, man hatte es ein paar Tippfehler Kumpel. Ich denke, es wäre <% = render 'Partial_Name',: Sammlung => Ihre_Modell.children%> innerhalb der Partiellen; und in der äußersten ul, würden Sie <% = render 'Partial_name',: Sammlung => YourModel.roots%> und vollständig loswerden von jedem. – jacortinas

+0

Der innere Renderer wurde auf your_model.children korrigiert. Wenn Sie eine neuere Version von Rails verwenden, müssen Sie den Namen des Partials nicht angeben, solange Sie ihm _the_name_of_your_model.html.erb geben. Sie müssen auch nicht übergeben: Sammlung. Schienen bestimmen, ob es sich um eine einzelne Instanz oder ein Array von Objekten handelt. –

0

Sie können das ganze Set mit einer Abfrage erhalten: Category.order("lft ASC")

Und wenn Sie :depth Spalt, voila! Eine Abfrage für alles, schreiben Sie einfach Ihre Ansicht zu verwenden: Tiefe.

+0

Keine Notwendigkeit: Tiefe Spalte. Awesome Nested Set Plugin hat Level-Methode. – xaph

+1

jeder Aufruf der Level-Methode Query db :( – Vlad

+0

Mit ['each_with_level (Objekte)'] (https://github.com/collectiveidea/awesome_nested_set/commit/9fcaaff3d6b351b11c4b40dc1f3e37f33d0a8cbe) sollte mehrere Abfragen vermeiden. – fractious