7

我正在渲染一个轨道部分,我想在渲染部分时交替背景颜色。我知道这不是很清楚,所以这里是我想要做的一个例子:

第一行灰色背景 第二行黄色背景 第三行灰色背景第四行黄色背景
  • 对不起stackoverflow接缝以防止显示背景颜色,但我认为这让我的想法很清楚

这是我正在使用的视图代码

<table>
  <%= render :partial => 'row' :collection => @rows %>
</table>

_row.html.erb 部分看起来像这样

<tr bgcolor="#AAAAAA">
  <td><%= row.name %></td>
</tr>

问题是我不知道如何更改每隔一行的背景颜色。有没有办法做到这一点?

4

3 回答 3

18

您可以使用 Cycle 助手。像这样的东西:

<tr class="<%= cycle("even", "odd") %>">
  <td><%= row.name %></td>
</tr>

或者在您的情况下使用 bgcolor 代替,尽管我建议使用 css 类。

您可以循环通过两个以上的值:cycle('first', 'second', 'third', 'and_more')。

还有: reset_cycle('cycle_name') 这确保在每次迭代中,您都将从循环列表的第一个值重新开始。

查看 Rails文档以获取更多示例。

于 2008-11-04T07:55:57.377 回答
0

另一个想法,您可以使用javascript根据(TD的总数%2)更改元素的样式。

这样,您所有的视觉内容都包含在 html/css/javascript 层中。再说一次,如果禁用了 javascript,此技术将不起作用。

于 2009-05-12T19:27:13.417 回答
0

循环有一个“陷阱”:如果你应该附加到字符串,循环就会中断。例如,

cycle('odd', 'even') << " some other classes"

将打破循环。但是,颠倒顺序或构造字符串可以正常工作:

"some other classes " << cycle('odd', 'even')
"#{cycle('odd', 'even')} some other classes"

我还没有(还)深入研究源代码,看看为什么会这样。另外,我正在使用 Rails 3.2.x

于 2013-01-05T19:16:07.240 回答