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

あなたの状況はわかりませんが、1 から 3 の代わりに 0 から 2 の番号が付けられたグループを使用できれば、これは少しきれいに見えます。

row_bg_color_group = (row_bg_color_group + 1) % 3
于 2012-08-19T21:47:30.180 に答える
2

cycle()Rails ( docs ) には があります。したがって、次のことができます。

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 に答える
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 に答える