2015-10-09 44 views
0

請幫忙解決問題。如何標記樹的父元素?

我使用gem'awesome_nested_set'。我做CRUD的模型類別和充滿DB後續值:

science = Category.create!(:title => 'Science') 

physics = Category.create!(:title => 'Physics') 
physics.move_to_child_of(science) 

gravity = Category.create!(:title => 'Gravity') 
gravity.move_to_child_of(physics) 

的結果我的樹看起來:

Science 
-- Physics 
-- -- Gravity 

在指數模板I輸出所有的根元素: categories_controller.rb:

def index 
    @categories = Category.roots 
end 

index.html.erb:

<% @categories.each do |category| %> 
    <td><%= link_to category.title, category %></td> 
<% end %> 

在節目模板I輸出self_and_descendants元素: categories_controller.rb:

def show 
    @categories = Category.find_by_id(params[:id]).self_and_descendants 
end 

show.html.erb:

<% @categories.each do |category| %> 
    <% if category.root? %> 
    <strong><%= category.title %></strong> 
    <% else %> 
    <div style="padding-left: <%= category.level %>0px"><%= link_to category.title, category %></div> 
    <% end %> 
<% end %> 

點擊 '科學' 索引頁後,我搬到顯示「科學」包裝強標籤和其他元素包裹div標籤的顯示頁面。好。

但是當我點擊'物理'後,我移動到顯示包含div標籤的所有元素的顯示頁面。

我需要先元素每場演出頁總是由強標籤包裹

PS:

create_table "categories", force: :cascade do |t| 
    t.string "title" 
    t.integer "parent_id" 
    t.integer "lft" 
    t.integer "rgt" 
    end 

回答

2

你的第一類並不總是根。在這種情況下,「根」意味着實際的根目錄類別,而不僅僅是給定上下文中的最高類別。你必須改變你的顯示邏輯不再依賴於root?法,而不是簡單地強調第一類是貌似你的真實意圖:

<strong><%= categories.first.title %></strong> 

<% @categories[1..-1].each do |category| %> 
    <div style="padding-left: <%= category.level %>0px"><%= link_to category.title, category %></div> 
<% end %> 
+0

感謝,但<%= @ categories.first。 title%> stackow1

相關問題