Подтвердить что ты не робот

Rails 3 - Построение таблицы, хотите изменить цвета каждой строки

Требуемый выход:

<ul>
 <li class="odd">stuff</li>
 <li class="even">stuff</li>
 <li class="odd">stuff</li>
 <li class="even">stuff</li>
 <li class="odd">stuff</li>
 <li class="even">stuff</li>
 <li class="odd">stuff</li>
 <li class="even">stuff</li>
</ul>

CSS

.odd {color:blue}
.even{color:red;}

В рельсах 3 есть ли чистый способ сделать это без счетчиков и т.д.?

спасибо

4b9b3361

Ответ 1

Рельсы. Для этого нужно использовать cycle.

<li class="<%= cycle('even', 'odd') -%>">stuff</li>

Документация

Ответ 2

Я нашел ответ здесь, который работал у меня, здесь немного сработал. Протестировано для работы с Rails 3.2.8.

Файл something.html.erb:

<table>
  <tr>
    <th>foo</th>
    <th>bar</th>
  </tr>
  <% @something.each do |s| -%>
    <tr class="<%= cycle('oddrow', 'evenrow') -%>">
      <td> ... </td>
      <td> ... </td>
    </tr>
  <% end %>
</table>

Файл something.css.scss:

table tr.oddrow {
    background-color: #111111;
}

table tr.evenrow {
    background-color: #333333;
}

Ответ 3

Строго говоря, не очень рельсы, но чистый способ достижения нечетного/четного с jquery на стороне клиента: http://api.jquery.com/odd-selector/

Ответ 4

Метод Rails TextHelper: cycle.

<li class="<%= cycle('odd','even') -%>">stuff</li>

Примечание: "нечетное" должно появиться до "четного" (не как указано выше), или ваш дизайнер может не быть счастлив, что начальный фоновый цвет не прошел, как она планировала.