Rails1.2.3 mongrelのprefix付き起動時に、グループ化されたコントローラに対応するURL指定方法

こちらの続きです。基本的にlink_toやurl_forは指定されたprefixに自動的に対応してくれるのですが、コントローラをグループ化しているときには注意が必要です。
以下の条件でのurl_forの出力を見てみます。

  • mongrel起動時のprefix: admin
  • 現画面: userでグループ化されたcontroller(user/normal_memberコントローラとする)
  • 遷移先: トップレベルのcontroller(loginコントローラとする)


現在のアドレス: /admin/user/normal_member
1.<%= url_for "login" %> => /admin/user/login
2.<%= url_for "/login" %> => /login
3.<%= url_for :controller=>"login" %> => /admin/user/login
4.<%= url_for :controller=>"/login" %> => /admin/login
1や3のように相対パスを指定すると、同じモジュール内へのリンクと判断されてしまいます。2のように絶対パスを指定すると通常のケースではうまくいきますが、prefixに対応してくれません。したがって4のように指定してあげる必要があります。
4の"/login"は、ルートモジュールのloginコントローラという意味です。別モジュールにリンクしたい場合は以下のようにします。

<%= url_for :controller=>"/another_module/another_controller" %>