1

我在 rails 视图中有类似于以下的代码。存储数据的哈希长度因页面而异。我希望能够对每一行进行编号。我知道我可以像这样得到散列的长度<%= hash.postdata.length %>什么是对每一行进行编号的正确方法,因为它们是由 each 方法生成的?注意,我可能最终不会使用<tr>s 和<td>s

<% hash.postdata.try(:each) do |key, value| %>
      <% if value.present? %>
       <tr>
       <td><%= has.post.user.name %></td><td><%= simple_format(key) %></td>
       </tr>             
       <% end %>   
 <%- end -%> 
4

1 回答 1

4

您可以each_with_index改用它,这将为您提供一个从零开始的索引:

<% hash.postdata.try(:each_with_index) do |(key, value), index| %>
  ...
<% end %>

所以第一个循环index将是 0,然后是 1,等等。所以你可以使用类似<%= index + 1 %>.

请注意,如果您只想计算带有 present 的行value,您当前的代码可能会导致跳过的行号。相反,最好先过滤哈希并摆脱if条件:

<% hash.postdata.select{ |k,v| v.present? }.each_with_index do |(key, value), index| %>
于 2013-10-01T14:08:30.617 回答