2010-08-05 27 views
2

我看到這個帖子軌真棒組嵌套顯示所有的貓,貓子,和子子貓

Ruby on Rails - Awesome nested set plugin

但我想知道如何做同樣的事情,而無需使用節點?我也想知道這個節點究竟在代碼本身做了什麼。

在我的分類視圖文件夾我有_category.html.erb和_full_categores_list.html.erb。

_category.html.erb具有以下代碼,它是上面鏈接的sae方式。

<li> 
    <%= category.name %> 

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

_full_categories_list.html.erb具有以下代碼。

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

此代碼工作得很好。但是,假設我想創建這些文件的重複項,而不是_full_categories_list.html.erb,我可能會創建一個_half_categories_list.html.erb,這可能會對代碼做一些改變。

如果我使用類似的代碼,就像我在_full_categories_list.html.erb中使用的那樣,它將繼續調用_category.html.erb。

我如何可以顯示所有的貓,貓子,利用_half_categories_list.html.erb子子貓像_half_category.html.erb而不是_category.html.erb文件

半類別,完整類別只是名稱,表明我在每個文件中做了不同的事情。我希望這是有道理的。我想基本上從上面的鏈接複製代碼的功能,但使用_half_category.html.erb而不是_category.html.erb,因爲我試圖在_half_category.html.erb文件中放入不同的功能。

回答

2

首先:使用render:partial:collection選項可以更簡單地編寫_full_categories_list.html.erb。

<ul> 
    <%= render :partial => :category, :collection => YourModel.roots %> 
</ul> 

這相當於你上面寫的_full_categories_list.html.erb

roots是由awesome_nested_set提供的named scope。您可以向模型添加更多範圍 - 例如名爲half_roots的命名範圍(請參閱鏈接瞭解有關信息)。

<ul> 
    <%= render :partial => :half_category, :collection => YourModel.half_roots %> 
</ul> 

然後可以使用_half_category.html.erb呈現類別你需要特殊的方式:

考慮到這一點,_half_categories_list.html.erb可以按如下方式寫入。