从不确定的哈希长度生成行号



我在rails视图中有类似于以下内容的代码。存储数据的哈希长度因页面而异。我希望能够对每一行进行编号。我知道我可以像这样获得哈希的长度<%= hash.postdata.length %> 当每行由每个方法生成时,对每一行进行编号的正确方法是什么?请注意,我可能不会最终使用 <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 -%> 

你可以改用each_with_index,这将给你一个从零开始的索引:

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

因此,第一个循环index将为 0,然后是 1,依此类推。因此,您可以使用类似 <%= index + 1 %> .

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

<% hash.postdata.select{ |k,v| v.present? }.each_with_index do |(key, value), index| %>

最新更新