有更好的方法吗?
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
答案 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")
然后他们不会发生冲突。