2014-01-16 3 views
0

Я пытаюсь создать карусель для начальной загрузки на своей странице. Карусель должна выглядеть так: первый элемент имеет активный класс.Ruby - Как распечатать атрибуты HTML

<ol class="carousel-indicators"> 
    <li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li> 
    <li data-target="#carousel-example-generic" data-slide-to="1"></li> 
    <li data-target="#carousel-example-generic" data-slide-to="2"></li> 
    </ol> 

Как добиться того же в Ruby? Могу ли я печатать номер слайда данных и активный класс из того же оператора.

<ol class="carousel-indicators"> 
    <% @order_items.each_index do |n| %> 
    <li data-target="#carousel-order-item" data-slide-to=<%= "#{n}"; (n == 0) ? "class="active"" : '' %>></li> 
    <% end %> 
    </ol> 

Спасибо!

+0

Вы, вероятно, должны переместить логику в вспомогательный метод – bjhaid

ответ

1

Я думаю, что это то, что вы хотите

<li data-target="#carousel-order-item" data-slide-to="<%= n.to_s %>" <%= if (n == 0) ? 'class="active"' : '' %> ></li> 
+0

Спасибо Andrew. Одиночные кавычки вокруг «class =« Active »» добавляют двойные кавычки вокруг Active, чтобы сделать его классом = «Active». Таким образом, я просто теперь «class = Active», и HTMl отображается правильно. Кроме того, любая причина, по которой у вас есть to_s. –

2

Попробуйте это и комментарий назад с вашими результатами, так что я могу Вам помочь.

<% @order_items.each_index do |n| %> 
    <li data-target="#carousel-order-item" data-slide-to="<%= n %>" 
    <%= "class=\"active\"" if n == 0 %> ></li> 
<% end %> 

Это работает как такой

order_items = %w{ mice rice lice } 

order_items.each_index do |n| 
    puts n 
    puts "class=\"active\"" if (n == 0) 
end 

Когда n == 0 то class="active" будет выводиться.

+0

Отлично, спасибо! См. Мой комментарий к Эндрю выше, о двойных кавычках, но кроме этого, это работает. –

+0

@learning_to_swim попробуйте код сейчас. Я избежал цитат dbl. Результат должен быть правильным. Счастливое кодирование :) – fyz

1

Ну, это просто будет массив, а как насчет того, чтобы просто получить индекс каждого элемента? Что-то вроде:

<ol class="carousel-indicators"> 
    <% @order_items.each do |n| %> 
    <li data-target="#carousel-order-item" data-slide-to="<%= n.index %>" class="<%= 'active'if n.index == 0 %>"></li> 
    <% end %> 
    </ol> 
Смежные вопросы