2010-01-13 40 views
5

有沒有一種簡單的方法來顯示使用此插件時的整個嵌套集? 我想要做的是顯示一個無序列表的根節點與另一個無序列表裏面的每個孩子也包含孩子等等?Ruby on Rails - 真棒嵌套設置插件

任何意見讚賞。

謝謝。

回答

4

有幾種方法可以做到這一點。最簡單的就是從根開始,解析每個節點及其子節點。我做的第一件事是讓部分的節點標記:

_your_model.html.erb

<li> 
    <%= your_model.name %> 

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

下一頁編輯您的視圖,以便第一根節點呈現:

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

我覺得你有幾個錯別字有哥們。我認爲這將是部分內部的<%= render'partial_name',:collection => your_model.children%>;並在最外面的ul中,你會做<%= render'partial_name',:collection => YourModel.roots%>並徹底擺脫每一個。 – jacortinas 2010-01-15 05:03:03

+0

修復了your_model.children的內部渲染。 如果您使用的是較新版本的導軌,則只要您提供_the_name_of_your_model.html.erb,就不需要指定部分的名稱。 你也不一定要通過:收集。 Rails將確定它是單個實例還是一個對象數組。 – 2010-01-15 16:28:48

0

您可以使用一個查詢得到整套:Category.order("lft ASC")

如果你有:depth列,瞧!一個查詢全部,只需編寫您的視圖使用:深度。

+0

不需要:深度欄。真棒嵌套設置插件有水平方法。 – xaph 2011-12-15 05:17:55

+1

每次調用級別方法查詢db :( – Vlad 2012-03-14 00:33:56

+0

使用['each_with_level(objects)'](https://github.com/collectiveidea/awesome_nested_set/commit/9fcaaff3d6b351b11c4b40dc1f3e37f33d0a8cbe)應該避免多個查詢。 – fractious 2013-02-08 12:24:19