v_manager/list.rhtmlからmanager/new.rhtmlやmanager/edit.rhtmlを呼ぶ

views/v_managers/list.rhtmlの

    <td><%= link_to 'Show', :action => 'show', :id => v_manager %></td>
    <td><%= link_to 'Edit', :action => 'edit', :id => v_manager %></td>
    <td><%= link_to 'Destroy', { :action => 'destroy', :id => v_manager }, :confirm => 'Are you sure?', :post => true %></td>

    <td><%= link_to 'Show', :action => 'show', :id => v_manager %></td>
    <td><%= link_to 'Edit', :action => 'edit', :id => manager %></td>
    <td><%= link_to 'Destroy', { :action => 'destroy', :id => manager }, :confirm => 'Are you sure?', :post => true %></td>

としてみると

undefined local variable or method `manager' for #<#<Class:0x6cf5afc>:0x6cf5ad4>

でエラーになる。うーん、そうかidに渡すパラメータは、選択されているv_manager.idの値だものね。ここをmanagerに変更しても駄目じゃん。

元に戻して、actionの対象を変更してみる。

    <td><%= link_to 'Edit', :action => 'Manager.edit', :id => v_manager %></td>

と、文法エラーは消えたが、実行してみると
No action responded to Manager.edit
が帰ってきた。生成されたページのソースを見てみると

 <td><a href="/v_managers/Manager.edit/3">Edit</a></td>

となっている。うん、当然だねぇ。/v_managers/の部分を変更できなきゃね。で、どうする?
だれが、/v_manager/Manager.edit/3の部分を作っているかを調べてみると、ルーティング定義の中で行っているらしい。で、url_forというメソッドを見つけた。

    <td><%= link_to 'EDIT', url_for(:controller=>'managers', :action => 'edit', :id => v_manager) %><td>

と書き直すと、ちゃんとmanagers/editを呼んでくれる。ということで、
v_managers/list.rhtmlを

<% for v_manager in @v_managers %>
  <tr>
  <% for column in VManager.content_columns %>
    <td><%=h v_manager.send(column.name) %></td>
  <% end %>
    <td><%= link_to 'Show', :action => 'show', :id => v_manager %></td>
    <td><%= link_to 'EDIT', url_for(:controller=>'managers', :action => 'edit', :id => v_manager) %><td>
    <td><%= link_to 'Destroy', url_for(:controller=>'managers', :action => 'destroy', :id => v_manager), :confirm => 'Are you sure?', :post => true %></td>
  </tr>
<% end %>
</table>

<%= link_to 'Previous page', { :page => @v_manager_pages.current.previous } if @v_manager_pages.current.previous %>
<%= link_to 'Next page', { :page => @v_manager_pages.current.next } if @v_manager_pages.current.next %> 

<br />

<%= link_to 'New v_manager', url_for(:controller=>'managers', :action => 'new') %>

に変更*1

後は受け側のmanagers/edit.rhtmlとmanager/new.rhmtlのlist先をv_managersに変更してみるが、editで作成した直後に表示されるのは、やっぱりmanagers/list.rhtmlだぁ。
しかも、new.rhtmlからでは、コントロールできそうにないし、edit.rhtmlでも更新直後はmanagers/list.rhtmlを表示する。

*1: Destroyの部分で、url_for(:controller=>'managers', :action => 'destroy', :id => v_manager, :confirm => 'Are you sure?', :post => true)とすると、:confirm以降が単にパラメータとして渡されてしまうので、:confirmの前で一回括弧を閉じること