Ответ 1
Рельсы. Для этого нужно использовать cycle
.
<li class="<%= cycle('even', 'odd') -%>">stuff</li>
Требуемый выход:
<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 есть ли чистый способ сделать это без счетчиков и т.д.?
спасибо
Рельсы. Для этого нужно использовать cycle
.
<li class="<%= cycle('even', 'odd') -%>">stuff</li>
Я нашел ответ здесь, который работал у меня, здесь немного сработал. Протестировано для работы с 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;
}
Строго говоря, не очень рельсы, но чистый способ достижения нечетного/четного с jquery на стороне клиента: http://api.jquery.com/odd-selector/
Метод Rails TextHelper: cycle.
<li class="<%= cycle('odd','even') -%>">stuff</li>
Примечание: "нечетное" должно появиться до "четного" (не как указано выше), или ваш дизайнер может не быть счастлив, что начальный фоновый цвет не прошел, как она планировала.