如何在Rails视图中循环显示3个值

时间:2012-08-19 21:41:04

标签: ruby-on-rails ruby loops

有更好的方法吗?

row_bg_color_group = row_bg_color_group == 1 ? 2 : row_bg_color_group == 2 ? 3 : 1

理想情况类似

row_bg_color_group = (1,2,3).cycle 

每次通过较大的循环时都会使用下一个值。

请注意,这是作为不同组大小的一部分有条件地执行的,例如

1111
1111
1111
2222
3333
3333
3333
333

不仅仅是

111
222
333
111
222
333
111
222
333

3 个答案:

答案 0 :(得分:4)

您可以使用模运算符:

row_bg_color_group = ((row_bg_color_group + 1) % 3) + 1

我不知道你的情况,但如果你可以使用编号为0到2而不是1到3的组,这看起来会更清晰。

row_bg_color_group = (row_bg_color_group + 1) % 3

答案 1 :(得分:2)

<% outer_loop_control do %>
  <% row_bg_color_group = cycle(1,2,3)
  <% inner_loop_control do %>
    ... # all uses of row_bg_color_group in the inner loop will be the same
  <% end %>
<% end %>

答案 2 :(得分:2)

Rails中有cycle()docs)。所以你可以这样做:

row_bg_color_group = cycle(1,2,3)

如果您需要多个周期,可以给他们命名:

row_bg_color_group = cycle(1,2,3, :name => "row_bg_color_group")

然后他们不会发生冲突。