我在rails视图中有类似以下的代码。存储数据的哈希长度根据页面而变化。我希望能够为每一行编号。我知道我可以像这样得到哈希的长度<%= hash.postdata.length %>
每个方法生成的每一行的编号是什么?请注意,我最终可能不会使用<tr>
和<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 -%>
答案 0 :(得分:4)
您可以使用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| %>