如何使用Ruby打印HTML表?

时间:2011-12-10 17:24:15

标签: ruby

这是我的代码:

<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个视频中,我希望表格能够切换行。所以我实施了一个计数器。 但它没有用。有什么想法吗?

2 个答案:

答案 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具有附加价值/优势,在需要时,它允许填充任何剩余的插槽,例如'&nbsp;',这可能非常有用。请参阅docs