假设我有以下汽车循环,我想在一行上显示4辆汽车,然后创建一个新行等。
<table>
<tr>
<% @cars.each do |car| %>
<td><%= car.name %></td>
<% end %>
</tr>
</table>
所以我看起来像这样:
car1 car2 car3 car4 car5 car6 car7 car8car9 car10 ...... ...
我该怎么做?
答案 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提供了这样的惊人方法!