Ответ Мессии - его основа. Без кавычек вокруг строки DOM останавливает классы, когда попадает в пробел. Он считает, что другие элементы являются атрибутами тега div
.
В соответствии с рекомендациями, мы обычно хотим избегать локальных присваиваний (где вы устанавливаете переменную) в представлении rails. Это действительно хочет быть помощником или декоратором (если вам действительно нужен этот уровень функциональности и тестируемости).
[Ниже приведен псевдокод, который я не тестировал, поэтому возможны незначительные ошибки]
В вашем представлении ERB:
<% @questions.each do |index| %>
<div class="<%= classy(index) %>" id="[TBD see below]">
<% end %>
Я бы посоветовал найти более семантический тег HTML, чем div
, если это возможно. Итераторы (.each), как правило, представляют собой список объектов, поэтому, возможно, лучшим выбором будет UL (неупорядоченный список) или OL (упорядоченный список) с LI внутри. UL дают вам кнопки, а OL дают номера по умолчанию, но их можно изменить.
Вы также, вероятно, хотите избежать знака # в имени идентификатора, так как вы бы назвали идентификатор в css-файле с помощью #name. Так что # name # 2, скорее всего, даст вам некоторые неожиданные и грязные результаты в DOM. Скорее всего, вы захотите использовать each_ with _index
, чтобы получить и массив, и значение индекса. Довольно хорошее объяснение различий здесь: Каков "правильный" способ перебора массива в Ruby?
<ul class="questions">
<% @questions.each_with_index do |question,index| %>
<li class="<%= classy(question, index) %>" id="question_<%= index %>">
[CONTENT]
</li>
<% end %>
</ul>
Вспомогательный метод в what_helper.rb (соответствует названию класса или приложению, если используется весь сайт):
def classy(question, index)
if index == 0
"tab-pane fade active show"
else
"tab-pane fade"
end
end
И пока мы это делаем, давайте вытащим разметку презентации из поля зрения. В вашем файле CSS:
.tab-pane.fade {
height: 444px;
overflow-y: auto;
}
Если вы пытаетесь достичь чего-то другого, дайте нам знать. Это было мое лучшее предположение, основанное на прочтении вопроса и кода.