2012-04-15 37 views
2

我使用天鷹嵌套集寶石here嵌套設置欄應用程序,幫助器方法不返回我所需要的

我只允許深度是兩個深度,我有一個保存過濾器檢查深度,但我似乎無法讓它限制在視圖中,所以客戶甚至沒有選擇它的選項。我正在使用視圖助手,如下所示。

應用程序/視圖/ _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 %> 

我主要興趣在該生產線是該

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

現在它總是返回嵌套組的各個層面,但我只想要顯示根節點,因爲我只允許兩個深度。我被困在這裏,因爲當我看到代碼here時,我只能看到一個選項來包含root,這是真的,我對此很滿意。我試圖這樣做是爲了行

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

但是,這一切確實是空白的是有一個級別小於兩個選項,我需要它其實並沒有返回他們。

那麼,如何才能讓nested_set_options只返回根,而不是任何具有深度的類?在此先感謝

回答

2

我認爲你在這裏使用了錯誤的幫手。 nested_set_options也是爲了獲得所有的後代而寫的。我建議你直接添加它:

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

是的,這是對的,我應該想到這一點。我非常關心nested_set,我沒有看到明顯的解決方案。非常感謝 – ruevaughn 2012-04-15 21:29:07