2016-06-28 3 views
0

Я боролся со строчной интерполяцией внутри HTML-аккордеона. Это скорее логический вопрос, который я, похоже, не могу понять (довольно новый для рельсов). Проблема в том, что, хотя макет в порядке, когда я нажимаю, чтобы свернуть любую из трех разборных панелей, все они рушится. (Потому что у меня только 1 #collapse).Bootstrap/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="collapse<%= sc.id %>" 

Выполните те же интерполяции для href из <a> тега, ответственного за разрушения и расширения аккордеона.

+0

Благодаря meagar, я добавил ту же интерполяцию в href и ID, но это испортило мои панели. Не могли бы вы быть немного более лаконичными (я очень смущен) Спасибо, хотя – Dotol

0

Используйте идентификатор категории id="#collapse<%= c.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 –

Смежные вопросы