2016-09-17 7 views
0

アコーディオンでラップしたいインデックスページには次の条件があります。Ruby on Railsの条件をブートストラップアコーディオンで囲む方法

index.html.erb

<% Category.top_level.each do |cat| %> 
    <div><%= cat.name %></div> #=>This lists top level categories 
    <ul> 
     <% cat.lawyers.each do |law| %> 
      <li> 
      <%= law.name %> #=>This lists lawyers under top level categories 
      </li> 
     <% end %> 
    </ul> 
    <% cat.sub_categories.each do |subcat| %> 
     <ul> 
      <%= subcat.name %> #=>This lists corresponding subcategories under the top level categories 
      <ul> 
      <% subcat.lawyers.each do |law| %> 
       <li><%= law.name %></li> #=>This lists lawyers that are under corresponding subcategories 
      <% end %> 
      </ul> 
     </ul> 
    <% end %> 
<% end %> 

私のコードをグラフィカルに表示し、私は

を行うには好きなものを正しく

enter image description here

作業

私はそれをBootstrap Accordionで実装するのが好きです。

答えて

4

トップレベルのカテゴリごとに1つのパネルを表示し、その下に弁護士の一覧を表示することができます。他のサブレベルが必要な場合は、単にdiv class = "panel-body"内に別のアコーディオンを追加することができます。

<div class="panel-group" id="accordion"> 
<% Category.top_level.each_with_index do |cat, index| %> 
    <div class="panel panel-default"> 
    <div class="panel-heading"> 
     <h4 class="panel-title"> 
     <a data-toggle="collapse" data-parent="#accordion" href="#collapse<%= index.to_s %>"> 
     <%= cat.name %> #=>This lists top level categories 
     </a> 
     </h4> 
    </div> 
    <div id="collapse<%= index.to_s %>" class="panel-collapse collapse"> 
     <div class="panel-body"> 
     <ul> 
      <% cat.lawyers.each do |law| %> 
       <li> 
       <%= law.name %> #=>This lists lawyers under top level categories 
       </li> 
      <% end %> 
     </ul> 
     </div> 
    </div> 
    </div> 
<% end %> 
</div> 
+0

他のカテゴリレベルのアコーディオンが開かれていないことを確認するために、div class = "panel-collapse"のidを正しく変更してください。私がそれらをクリックすると、それは最初のカテゴリレベルでのみ有効になります。言い換えれば、他のカテゴリにあるものが見えない。 –

+0

おそらくパネルに同じIDを使用していますが、私の答えで述べたように(id = collapseX)、それらを変更しようとしています。 –

+1

ありがとうございます@DamianDominella –

関連する問題