0

Railsではあなたができることを私は知っています

<tr class="<%= cycle("even", "odd") %>">

特定の行のクラスを循環させます。

しかし、このような場合

<% @products.each do |p| %>
<tr class="headers">
    <td><%= p.name %></td>
    <td><%= p.idnum %></td>
    ...
</tr>
<% end %>

列クラスを自動的に切り替えるにはどうすればよいですか?

このようなことができる方法はありますか?(説明のために、いくつかの架空のメソッド名('.column_names')を発明しました)

<% @products.each do |p| %>
    <tr class="headers">
        <% products.column_names.each do |c| %>
            <td class="<%= cycle("even", "odd") %>"><%= c %></td>
        <% end %>
    </tr>
<% end %>

編集:(適切な例)

<table>
  <tr class="headers">
    <td class="even">&nbsp;</td>
    <td class="odd">Name</td>
    <td class="even">Followers</td>
    <td class="odd">Date Joined</td>
    <td class="even">Slogan</td>
    <td class="odd">Location(s)</td>
    <td class="even">Segments(s)</td>
    <td class="odd">Website</td>
  </tr>
  <tr class="body">
    <td class="even"><img src="<%= company.thumbnail_logo %>"></td>
    <td class="odd"><%= company.company_name %></td>
    <td class="even"><%= company.followers %></td>
    <td class="odd">...</td>
    ...
  </tr>
</table>

これは私が現在書いているところです、そしてあなたが見ることができるようにそれはかなり冗長です。私はそれを減らすことを探しています。

4

3 に答える 3

5

これはスタイリングのためだけですか?CSS3を使用すると、クラスを割り当てることなくこれを行うことができます。

tr:nth-of-type(even){ your_css_here }

また

td:nth-of-type(even){ your_css_here }

それがあなたが望むものであるならば、と交換evenしてくださいodd

また、<th>ヘッダーには使用しませんか?

于 2012-07-21T19:31:31.557 に答える
2

同じループ内で複数の名前付きサイクルを使用して、この効果を実現できます。呼び出されたモデルを使用して、属性名に対応するクラスを使用しExampleて各属性を独自に出力する例を次に示します。<td>

<% @examples.each do |example| %>
  <tr class="<%= cycle('odd', 'even', :name => 'row-cycle') %>">
    <% example.attributes.each_pair do |attribute, value| %>
      <td class="<%= cycle(*example.attribute_names, :name => 'column-cycle') %>"><%= value %></td>
    <% end %>
  </tr>
<% end %>

そして、このコードからのいくつかのサンプル出力:

<tr class="odd">
  <td class="id">1</td>
  <td class="name">Brandan</td>
  <td class="location">Raleigh</td>
  <td class="created_at">2012-07-21 21:14:45 UTC</td>
  <td class="updated_at">2012-07-21 21:14:45 UTC</td>
</tr>

すべてのレコードにすべての属性を印刷したくない場合は、ニーズに合わせてこれを調整できます。

于 2012-07-21T21:23:17.503 に答える
0

実際、Railsにはサイクルヘルパーがあります。

http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-cycle

于 2012-07-21T19:13:50.407 に答える