1

有一个更好的方法吗:

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
4

3 回答 3

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
于 2012-08-19T21:47:30.180 回答
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 %>
于 2012-08-19T22:27:01.653 回答
2

Rails 中有一个cycle()文档)。所以你可以这样做:

row_bg_color_group = cycle(1,2,3)

如果您需要有多个循环,您可以给它们命名:

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

然后他们就不会冲突了。

于 2012-08-20T01:25:38.870 回答