Дерево меню с использованием предков в рельсах

В соответствии с этим ответом /questions/33185000/kak-sozdat-derevo-kategorij-ispolzuya-rodoslovnuyu-ruby-on-rails-3/33185014#33185014 я пытаюсь создать древовидное меню для моего приложения

этот ответ работает только для root а также first children, Я ищу предложение для преобразования этого кода, хорошо работать с n детские.

<ul id="menu">
  <% Hub.roots.each do |category| %>
     <li> <%= link_to h(category.title), category %>
        <% unless category.children.empty? %>
           <ul id="sub-menu"> 
             <% category.children.each do |subcategory| %>
                <li><%= link_to h(subcategory.title), subcategory %></li>
             <% end %>
           </ul>
        <% end %>
     </li>
  <% end %>
</ul>

1 ответ

  <% Hub.roots.each do |category| %>
    <div> <%= link_to h(category.title), category %>
      <% if category.children.present? %>
      <div id="submenu">
        <%= render 'hubs/sub', category: category %>
      </div>
      <% end %>
    </div>
  <% end %>

частичный _sub

<ul>
  <% category.children.each do |sub| %>
    <li>
      <%= link_to_unless_current sub.title, sub %>
      <%= render 'hubs/sub', category: sub %>
    </li>
  <% end %>
</ul>

и CSS

#submenu > ul, ol {
  margin-right: 20px;
  li {
    font-size: 11px;
    margin: 4px 0;
    margin-bottom:-5px !important;
  }
  ul, ol {
    font-size: 11px;
    margin: 0;
    padding-left: 16px;
    margin-bottom:-5px !important;
    li {
      margin: 4px 0;
    }
  }
}
Другие вопросы по тегам