rails部分中的条件格式

时间:2008-11-04 07:48:19

标签: ruby-on-rails ruby renderpartial

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

第一排灰色背景 行二黄色背景 行三灰色背景 行四黄色背景
  • 抱歉stackoverflow接缝,以防止显示背景颜色,但我认为这使我的想法清晰

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

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

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

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

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

3 个答案:

答案 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