2011-03-27 69 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提供了這樣的驚人方法!