Rails1.2.3 mongrelのprefix付き起動時に、グループ化されたコントローラに対応するURL指定方法
こちらの続きです。基本的にlink_toやurl_forは指定されたprefixに自動的に対応してくれるのですが、コントローラをグループ化しているときには注意が必要です。
以下の条件でのurl_forの出力を見てみます。
- mongrel起動時のprefix: admin
- 現画面: userでグループ化されたcontroller(user/normal_memberコントローラとする)
- 遷移先: トップレベルのcontroller(loginコントローラとする)
1や3のように相対パスを指定すると、同じモジュール内へのリンクと判断されてしまいます。2のように絶対パスを指定すると通常のケースではうまくいきますが、prefixに対応してくれません。したがって4のように指定してあげる必要があります。
現在のアドレス: /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
4の"/login"は、ルートモジュールのloginコントローラという意味です。別モジュールにリンクしたい場合は以下のようにします。
<%= url_for :controller=>"/another_module/another_controller" %>