7

Rails パーシャルをレンダリングしていますが、パーシャルをレンダリングするときに背景色を変更したいと考えています。私はそれが非常に明確ではないことを知っているので、ここに私がやりたいことの例があります:

行 1 の灰色の背景 行 2 の黄色の背景 行 3 の灰色の背景 行 4 の黄色の背景
  • 背景色が表示されないようにスタックオーバーフローの継ぎ目が申し訳ありませんが、これで私の考えが明確になると思います

これは私が使用しているビューコードです

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

_row.html.erb パーシャルは次のようになります

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

問題は、1 行おきに背景色を変更する方法がわからないことです。これを行う方法はありますか?

4

3 に答える 3

18

Cycleヘルパーを使用できます。このようなもの:

<tr class="<%= cycle("even", "odd") %>">
  <td><%= row.name %></td>
</tr>

または、あなたの場合は代わりに bgcolor を使用しますが、css クラスを使用することをお勧めします。

3 つ以上の値を循環させることができます: cycle('first', 'second', 'third', 'and_more')。

また、以下もあります: reset_cycle('cycle_name') これにより、繰り返しのたびに、サイクル リストの最初の値からやり直すことができます。

その他の例については、レールのドキュメントを確認してください。

于 2008-11-04T07:55:57.377 に答える
0

サイクルには1つの「落とし穴」があります。文字列に追加する必要がある場合、サイクルが中断します。例えば、

cycle('odd', 'even') << " some other classes"

サイクルを壊します。ただし、順序を逆にするか、文字列を作成することは問題なく機能します。

"some other classes " << cycle('odd', 'even')
"#{cycle('odd', 'even')} some other classes"

私は(まだ)これがなぜそうなのかを知るために情報源を掘り下げていません。また、Rails3.2.xを使用しています

于 2013-01-05T19:16:07.240 に答える
0

別のアイデアとして、javascriptを使用して、(TDの%2の総数)に基づいて要素のスタイルを変更できます。

そうすれば、すべての視覚的なものがhtml / css/javascriptレイヤーに含まれます。この場合も、JavaScriptが無効になっていると、この手法は機能しません。

于 2009-05-12T19:27:13.417 に答える