表の行数2007年11月01日 13時00分58秒

とても平素な表であれば、Ruby on Rails では簡単に作成できる。表の行数も増えてくると、せめて通し番号ぐらい付けたくなる。しかし、通し番号はちょっとしたコツが必要だ。


<table>
  <tr>
    <th></th>
  <% for column in Todo.content_columns %>
    <th><%= column.human_name %></th>
  <% end %>
  </tr>

<% count = 0 %>
<% for todo in Todo.find(:all) %>
  <tr>
    <td><% count = count + 1 %><%= count %></td>
  <% for column in Todo.content_columns %>
    <td><%=h todo.send(column.name) %></td>
  <% end %>
    <td><%= link_to 'Show', :action => 'show', :id => todo %></td>
    <td><%= link_to 'Edit', :action => 'edit', :id => todo %></td>
    <td><%= link_if_authorized 'Destroy', { :action => 'destroy', :id => todo },
      :confirm => 'Are you sure?', :post => true %></td>
  </tr>
<% end %>
</table>

  1. 繰り返しの前に、count をゼロで初期化する。
  2. 一つ増やした後に、表示する。
一般的には一から数えるので、こうなる。また、ゼロで初期化している為、繰り返しの後に行数が残る。一で初期化して、後置で増やすと、一つずれる事になる。

また、一気に<= ++count > で表示とインクリメントをやろうとしたが、Rails が処理に失敗し、使えなかった。