Рельсы 3 - Создание таблицы, хочу чередовать цвета в каждой строке - PullRequest
17 голосов
/ 09 октября 2010

Желаемый вывод:

<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 есть чистый способ сделать это без счетчиков и т.д.?

спасибо

Ответы [ 4 ]

38 голосов
/ 09 октября 2010

Rails Способ сделать это - использовать cycle.

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

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

4 голосов
/ 19 октября 2012

Я нашел ответ здесь , который работал для меня, здесь немного уточнил. Протестировано для работы с 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;
}
2 голосов
/ 09 октября 2010

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

1 голос
/ 16 февраля 2014

Метод TextHelper Rails: цикл .

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...