1

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 -%> 
4

1 に答える 1

4

代わりに使用できますeach_with_index。これにより、ゼロベースのインデックスが得られます。

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

したがって、最初のループindexは 0、次に 1 などになります。したがって、次のようなものを使用して出力できます<%= index + 1 %>

valuepresent を使用して行をカウントするだけの場合、現在のコードではおそらく行番号がスキップされることに注意してください。代わりに、最初にハッシュをフィルタリングして条件を取り除くのがおそらく最善でしょうif:

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