rails计数记录

时间:2011-03-27 20:40:57

标签: ruby-on-rails

假设我有以下汽车循环,我想在一行上显示4辆汽车,然后创建一个新行等。

<table>
    <tr>
    <% @cars.each do |car| %>
        <td><%= car.name %></td>
    <% end %>
    </tr>
</table>

所以我看起来像这样:

car1 car2 car3 car4

car5 car6 car7 car8

car9 car10 ...... ...

我该怎么做?

2 个答案:

答案 0 :(得分:2)

<table>
  <% @cars.each_slice(4) do |cars| %>
    <tr>
      <% cars.each do |car| %>
        <td><%= car.name %></td>
      <% end %>
    </tr>
  <% end %>
</table>

连续添加一个班级td

<table>
  <% @cars.each_slice(4) do |cars| %>
    <tr>
      <% cars.each do |car| %>
        <td <%= "class='my_class'" if car == cars.last %>>
          <%= car.name %>
        </td>
      <% end %>
    </tr>
  <% end %>
</table>

答案 1 :(得分:1)

您可以利用Enumerable中的each_slice method,例如:

[1,2,3,4,5,6,7,8,9,10].each_slice(4).to_a
#=> [1, 2, 3, 4], [5, 6, 7, 8], [9, 10]] 

所以你的代码就像:

<table>
  <% @cars.each_slice(4) do |cars| %>
    <tr>
      <% cars.each do |c| %>
        <td><%= c.name %></td>
      <% end %>
    </tr>
  <% end %>
</table>

点是,总是看看Enumerable page这样的事情。 Ruby提供了这样的惊人方法!