2016-03-27 36 views
0

modelinde ebeveyni olan çocukları bir araya getirin Ben açılır menüleri olan bir menü yaratıcısı oluşturmaya çalışıyorum, açılır menülerden çocukları almanın dışında her şeye sahibim. Benim ApplicationController olarakRuby on Rails,

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 

Ve etrafında arama ama bulabildiğim şey herhangi oldu teşebbüs ettik

 <% @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 %> 

düzen yardım et.

cevap

1

aşağıdaki deneyin:

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

sizin application_controller.rb içinde ve görünümde: mükemmel çalıştı

<% @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

, teşekkür ederim! – Xerukm