2011-03-27 76 views
0

让说,我有以下汽车循环,我想在一行上显示4辆汽车,然后创建一个新的行等轨盘点记录

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

所以我看起来是这样的:

CAR 1 CAR2的Car3 CAR4

car5 car6 car7 car8

car9 car10 ...... ...

我该怎么做?

回答

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> 
+0

太好了!如果我想在添加另一行之前添加一个类到最后一个TD,该怎么办? – andkjaer 2011-03-27 21:14:37

+0

看到我的更新。 – fl00r 2011-03-27 21:18:33

+0

工程就像一个魅力 - 谢谢你:O) – andkjaer 2011-03-27 21:57:38

1

您可以乘坐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提供了这样的惊人方法!