2012-04-15 9 views
2

Ich benutze Sky Eagles verschachtelte Set Edelstein here.verschachtelte Set Schienen App, Helfer Methode nicht zurück, was ich brauche

Ich erlaube nur die Tiefe zwei tief zu sein, und ich habe einen vor speichern Filter die Tiefe zu überprüfen, aber ich kann nicht scheinen, es in der Ansicht zu begrenzen, so dass der Kunde nicht einmal hat die Option, es auszuwählen. Ich benutze den View-Helfer wie beschrieben, hier gezeigt.

app/views/_form.html.erb

<%= form_for(@category) do |f| %> 
    <p> 
    <%= f.label(:name) %> 
    <%= f.text_field :name %> 
    </p> 
    <p> 
    <%= f.label(:parent_id) %> 
    <%= f.select :parent_id, nested_set_options(Category.roots.to_a, @category) {|i, level| "#{'-' * level} #{i.name}" } %> 
    </p> 
    <p> 
    <%= f.submit("Submit") %> 
    </p> 
<% end %> 

Die Linie i in erster Linie daran interessiert bin, ist diese

<%= f.select :parent_id, nested_set_options(Category.roots.to_a, @category) {|i, level| "#{'-' * level} #{i.name}" } %> 

Gerade jetzt ist es immer alle Ebenen der verschachtelten Satz Rückkehr, aber Ich möchte nur Wurzelknoten anzeigen lassen, da ich nur zwei tiefe erlaube. Ich stecke hier fest, denn wenn ich mir den Code here anschaue, sehe ich nur eine Option, die root einbezieht, was wahr ist, und damit bin ich einverstanden. Ich habe dies

<%= f.select :parent_id, nested_set_options(Category.roots.to_a, @category) {|i, level| "#{'-' * level} #{i.name}" if i.level < 1} %> 

die Linie versuchte dabei Aber all dies tut, ist leer aus den Optionen, die eine Ebene weniger haben dann zwei, ich brauche es eigentlich nicht, sie überhaupt zurück.

Also, wie bekomme ich die Nested_set_options, um nur die Wurzeln zurückzugeben, keine Kategorie, die Tiefe hat? Vielen Dank im Voraus

Antwort

2

Ich denke, dass Sie hier den falschen Helfer verwenden. nested_set_options wurde geschrieben, um alle Nachkommen auch zu bekommen. Ich würde vorschlagen, es nur von Hand hinzuzufügen:

f.select :parent_id, Category.roots.collect {|c| [ c.name, c.id ] } 
+0

Ja, das ist richtig, ich hätte selbst daran gedacht. Ich war so besorgt über nested_set, dass ich die offensichtliche Lösung nicht sah. Vielen Dank – ruevaughn