2016-06-28 27 views
0

私はHTMLアコーディオン内の文字列補間に苦労しました。それは論理的な問題で、私は理解できないように思えます。私が持っている問題は、レイアウトがうまくいっている間に、折りたたみパネルを折りたたむためにクリックすると、すべて折りたたまれてしまうということです。 (私は1 #collapseしか持っていないので)。あなたのIDは一意である必要がブートストラップ/ Rails - アコーディオン内の文字列補間

最外ERB

<div class="container-fluid"> 
    <div class="row"> 
     <div class="col-md-2 col-sm-3"> 
       <h2>Categorias</h2> 
       <div class="panel-group" id="accordion"> 
        <%= render partial: "categories/catalog", collection: @categories, as: :c %> 
      </div> 
     </div> 

_catalog部分

<div class="panel panel-default"> 
    <div class="panel-heading"> 
     <h4 class="panel-title"> 
      <a data-toggle="collapse" data-parent="#accordion" href="#collapse1"> 
       <%= c.name %> 
       <span class="badge">4</span> 
      </a> 
     </h4> 
    </div> 
    <div id="collapse1" class="panel-collapse collapse in"> 
     <% c.subcategories.each do |sc| %> 
      <div class="panel-body"> 
       <a href="#"> 
        <%= sc.name %> 
       </a> 
      </div> 
     <% end %> 
    </div> 
</div> 

コントローラ

def catalogo 
    @categories = Category.where("parent_id IS NULL") 
    unless params[:cat_id].blank? 
     @products = Product.where(category_id: params[:cat_id]).paginate(:page => params[:page], :per_page => 50) 
    else 
     @products = Product.all.paginate(:page => params[:page], :per_page => 50) 
    end 
     @categorieswparent = Category.where("parent_id IS NOT NULL") 
    end 

答えて

0

。代わりにハードコーディングid="collapse1"、レコードのIDを使用します。

id="collapse<%= sc.id %>" 

はアコーディオンを崩壊し、拡大する責任<a>タグのhrefに同じ補間を行います。

+0

ありがとうmeagar、私はhrefとIDに同じ補間を追加しましたが、それは私のパネルを台無しにしました。 – Dotol

0

を使用して、要素IDを補間するには、_catalog部分で入力します。

<div class="panel panel-default"> 
    <div class="panel-heading"> 
     <h4 class="panel-title"> 
      <a data-toggle="collapse" data-parent="#accordion" href="#collapse<%= c.id %>"> 
       <%= c.name %> 
       <span class="badge">4</span> 
      </a> 
     </h4> 
    </div> 
    <div id="collapse<%= c.id %>" class="panel-collapse collapse in"> 
     <% c.subcategories.each do |sc| %> 
      <div class="panel-body"> 
       <a href="#"> 
        <%= sc.name %> 
       </a> 
      </div> 
     <% end %> 
    </div> 
</div> 
+0

感謝していますが、私はそれを試してみましたが、パネルは崩壊しません – Dotol

+0

@Dotolあなたは両方の場所の行を変更する必要があります:4と行:あなたは少し簡潔にすることができます(私は非常に混乱しています) 10 –