我正在渲染部分轨道,我想在渲染部分时交替使用背景颜色。我知道这不是很清楚,所以这里有一个我想做的例子:
第一排灰色背景 行二黄色背景 行三灰色背景 行四黄色背景这是我正在使用的视图代码
<table>
<%= render :partial => 'row' :collection => @rows %>
</table>
_row.html.erb部分看起来像这样
<tr bgcolor="#AAAAAA">
<td><%= row.name %></td>
</tr>
问题是我不知道如何更改每隔一行的背景颜色。有没有办法做到这一点?
答案 0 :(得分:18)
您可以使用Cycle助手。像这样:
<tr class="<%= cycle("even", "odd") %>">
<td><%= row.name %></td>
</tr>
或者在你的情况下使用bgcolor,虽然我会建议使用css类。
您可以循环使用两个以上的值:循环('first','second','third','and_more')。
还有:reset_cycle('cycle_name')这确保在每次迭代时,您将再次使用循环列表的第一个值。
检查导轨documentation以获取更多示例。
答案 1 :(得分:0)
另一个想法是,您可以使用javascript根据(TD的%2的总数)更改元素的样式。
这样你所有的视觉内容都包含在html / css / javascript层中。然后,如果禁用javascript,此技术将无法使用。
答案 2 :(得分:0)
循环中有一个“陷阱”:如果你应该附加到字符串,循环就会中断。例如,
cycle('odd', 'even') << " some other classes"
会打破这个循环。但是,反转顺序或构造字符串可以正常工作:
"some other classes " << cycle('odd', 'even')
"#{cycle('odd', 'even')} some other classes"
我还没有深入研究消息来源,看看为什么会这样。另外,我正在使用Rails 3.2.x