2016-06-23 2 views
0

(Очень новое для рельсов и бутстрапов) Я работаю над проектом, в котором я хочу вставлять элементы в html-аккордеон, точнее, 10 элементов. Только 3 элемента сбрасываются. Я прочитал макеты и часть рендеринга документации Rails, но я все еще очень смущен относительно того, как это сделать, особенно в том, чтобы присвоить класс сбрасываемым только 3 элементам. Любой совет полезен, спасибо заранее.Rails - Вставка элементов выбора из контроллера в частичном

x.HTML.erb

<h4> 
    <a href="#"> 
     <li><%= link_to category.name, catalogo_path(cat_id: category.id), remote: true %></li> 
    </a> 
</h4> 


<% category.subcategories.each do |cat| %> 
    <li><%= link_to cat.name, catalogo_path(cat_id: cat.id), remote: true %></li> 

<% end %> 

Частичное

<h4> 
    <a href="#"> 
     <li><%= link_to category.name, catalogo_path(cat_id: category.id), remote: true %></li> 
    </a> 
</h4> 
<% category.subcategories.each do |cat| %> 
    <li><%= link_to cat.name, catalogo_path(cat_id: cat.id), remote: true %></li> 
<% end %> 

Структура аккордеон HTML Я хочу использовать:

<div class="accordion" id="accordion2"> 
       <div class="accordion-group"> 
        <h4> 
         <a href="#">Angulos</a> 
        </h4> 
        <h4>  
         <a href="#">Soleras</a> 
        </h4> 
        <h4> 
         <a href="#">Semiflechas</a> 
        </h4> 
        <h4> 
         <a href="#">Redondos</a> 
        </h4> 
        <div class="accordion-heading"> 
         <h4> 
          <a class="accordion-toggle" data-toggle="collapse" href="#collapseOne">Cuadrados</a> 
         </h4> 
        </div> 
        <div id="collapseOne" class="accordion-body collapse in"> 
         <a href="#" class="accordion-inner">Cuadrados Normales</a> 
         <a href="#" class="accordion-inner">Cuadrados Retorcidos</a> 
        </div> 
        <h4> 
         <a href="#">Canal</a> 
        </h4> 
        <h4> 
         <a href="#">Vigas IPR</a> 
        </h4> 
        <h4> 
         <a href="#">Vigas IPS</a> 
        </h4> 
       </div> 
       <div class="accordion-group"> 
        <div class="accordion-heading"> 
         <h4> 
          <a class="accordion-toggle" data-toggle="collapse" href="#collapseTwo">Placas</a> 
         </h4> 
        </div> 
        <div id="collapseTwo" class="accordion-body collapse"> 
         <a href="#" class="accordion-inner">Placa de Rollo</a><br> 
         <a href="#" class="accordion-inner">Placa de Grado</a> 
        </div> 
       </div> 
       <div class="accordion-group"> 
        <div class="accordion-heading"> 
         <h4> 
          <a class="accordion-toggle" data-toggle="collapse" href="#collapseThree">Laminas</a> 
         </h4> 
        </div> 
        <div id="collapseThree" class="accordion-body collapse"> 
         <a href="#" class="accordion-inner">Laminas Calientes</a><br> 
         <a href="#" class="accordion-inner">Laminas Frias</a> 
         <a href="#" class="accordion-inner">Laminas Antiderrapantes</a> 
        </div> 
       </div> 
      </div> 

ответ

1

Если я правильно понимаю ваш вопрос, то вы хотите использовать частичные для генерации HTML-кода, который вы опубликовали. Вот предложение.

Я не думаю, что вам нужен .accordion-group вокруг каждого комплекта, который вы хотите развернуть. Вы можете просто положить все в одном.

Вот внешний шаблон ERB.

<div class="accordion" id="accordion2"> 
    <div class="accordion-group"> 
    <%= @categories.each do |category| %> 
     <% if category.subcategories.any? %> 
     <%= render partial: "category_with_sub", locals: {category: category} %> 
     <% else %> 
     <%= render partial: "category", locals: {category: category} %> 
     <% end %> 
    <% end %> 
    </div> 
</div> 

Частичное _category_with_sub.html.erb

<div class="accordion-heading"> 
    <h4> 
    <a href="#"> 
     <li><%= link_to category.name, catalogo_path(cat_id: category.id), class: "accordion-toggle", "data-toggle" => "collapse", remote: true %></li> 
    </a> 
    </h4> 
</div> 

<div id="collapseOne" class="accordion-body collapse in"> 
    <% category.subcategories.each do |cat| %> 
    <li><%= link_to cat.name, catalogo_path(cat_id: cat.id), class: "accordion-inner", remote: true %></li> 
    <% end %> 
</div> 

Частичное _category.html.erb

<h4> 
    <a href="#"> 
    <li><%= link_to category.name, catalogo_path(cat_id: category.id), remote: true %></li> 
    </a> 
</h4> 

Одно последнее предложение. Похоже, вы используете старую версию бутстрапа. Возможно, вы захотите рассмотреть возможность обновления до the latest version.

UPDATE

отредактированные категории быть @categories

Если предположить, что ваш контроллер выглядит примерно так.

class CategoriesController < ApplicationController 
    def index # or whatever action you want 
    @categories = Category.all # or whatever query you want to use 
    end 
end 
+0

Спасибо большое, я попробовал это прошлой ночью, но он бросает неопределенную локальную переменную или метод 'ошибки Категории – Dotol

+0

@Dotol Я обновил свой ответ. Я предположил, что у вас есть массив категорий, которые вы создаете в своем контроллере. –

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