这是我的代码:
<table class="video_table">
<% count = 0 %>
<tr>
<% @f_videos.each do |f_video| %>
<td><%= f_video.name %></td>
<td><%= f_video.date_added %></td>
<td><%= f_video.views %></td>
<% count +=1 %>
<% if count == 4 %>
</tr>
<% end %>
<% end %>
</table>
在每个放置的4个视频中,我希望表格能够切换行。所以我实施了一个计数器。 但它没有用。有什么想法吗?
答案 0 :(得分:2)
您的点数只会设为4次。
而不是if count == 4
使用if count % 4 == 0
这将为每个4的倍数重复</tr>
或者,您可以跳过使用count变量并使用each_with_index
来获得相同的结果
<table class="video_table">
<% @f_videos.each_with_index do |f_video, i| %>
<tr>
<td><%= f_video.name %></td>
<td><%= f_video.date_added %></td>
<td><%= f_video.views %></td>
<% if (i+1) % 4 == 0 %>
</tr>
<% end %>
<% end %>
</table>
更好! each_slice
<table class="video_table">
<% @f_videos.each_slice(4).to_a do |slice| %>
<tr>
<% slice.each do |f_video| %>
<td><%= f_video.name %></td>
<td><%= f_video.date_added %></td>
<td><%= f_video.views %></td>
<% end %>
</tr>
<% end %>
</table>
答案 1 :(得分:1)
另一种解决方案:
<table class="video_table">
<% @f_videos.in_groups_of(4) do |group| %>
<tr>
<% group.each do |f_video| %>
<td><%= f_video.name %></td>
<td><%= f_video.date_added %></td>
<td><%= f_video.views %></td>
<% end %>
</tr>
<% end %>
</table>
in_groups_of
具有附加价值/优势,在需要时,它允许填充任何剩余的插槽,例如' '
,这可能非常有用。请参阅docs。