Rails 3 - 构建一个表,想要每行交替颜色

时间:2010-10-08 23:28:38

标签: ruby-on-rails ruby-on-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中有没有一个干净的方法来做这个没有计数器等?

感谢

4 个答案:

答案 0 :(得分:38)

Rails执行此操作的方法是使用cycle

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

Documentation

答案 1 :(得分:4)

我找到了一个对我有用的答案here,这里有点充实。测试使用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 :(得分:2)

严格地说,不是真正的铁路,而是实现奇/偶的干净方式是在客户端使用jquery:http://api.jquery.com/odd-selector/

答案 3 :(得分:1)

Rails的TextHelper方法:cycle

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

注意:'奇数'应该在'偶数'之前(不是上面列出的)或者你的设计师可能不满意起始背景颜色没有像她计划的那样。