2016-03-27 50 views
0

我試圖用下拉菜單創建一個菜單創建者,除了獲取下拉菜單的子項外,我有一切工作。Ruby on Rails,在模板中獲取父項的子項

在我的ApplicationController

def set_links 
@alllinks = Link.all 
end 

link.rb

class Link < ActiveRecord::Base 
     has_many :children, class_name: "Link", foreign_key: "parent_id" 
     belongs_to :parent, class_name: "Link" 
    end 

而且佈局

 <% @alllinks.each do |link| %> 
     <% if link.dropdown == true %> 
      <li class="dropdown"> 
      <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><%= link.text %> <span class="caret"></span></a> 
      <ul class="dropdown-menu"> 
      <li><a href="<%= link.url %>"><%= link.text %></a></li> 
      </ul> 
      </li> 
     <% else %> 
      <% if link.dropdown == false && link.parent == nil %> 
      <li><a href="<%= link.url %>" target="<%= link.target %>"><%= link.text %></a></li> 
      <% end %> 
     <% end %> 
     <% end %> 

我已經嘗試四處搜尋,但沒有什麼我能找到的任何幫幫我。

回答

1

嘗試以下操作:

在你application_controller.rb

def set_links 
    # load only the parent links 
    # no need to load all the links 
    @root_links = Link.where(parent: nil) 
end 

,並在您的視圖:

<% @root_links.each do |link| %> 
    <% if link.dropdown == true %> 
    <li class="dropdown"> 
     <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><%= link.text %> <span class="caret"></span></a> 
     <ul class="dropdown-menu"> 
     <% link.children.each do |child_link| %> 
     <li><a href="<%= child_link.url %>"><%= child_link.text %></a></li> 
     <% end %> 
     </ul> 
    </li> 
    <% else %>  
    <li><a href="<%= link.url %>" target="<%= link.target %>"><%= link.text %></a></li> 
    <% end %> 
<% end %> 
+0

,完美的工作,謝謝! – Xerukm