我在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| %>