2011/06/27

rails3.0で動的ルーティングを実現する。

例えば、

http://devel.com/userA/controllerA/actionA
http://devel.com/userB/controllerA/actionA
http://devel.com/userA/controllerB/actionA
http://devel.com/userB/controllerB/actionA

のようなルーティング(パスの最初のセグメントが動的)をRails3.0で実現するには、
config/routes.rbに、次のような定義を書く。

config/routes.rb
scope "/(:username)" do
  get "controllerA/actionA" => "controllerA#actionA"
  get "controllerB/actionA" => "controllerB#actionB"
end

この「scope」の定義により、

http://devel.com/userA/controllerA/actionA

がリクエストされた場合、コントローラ"controllerA"のアクション"actionA"が実行され、
その際に、params[:username]に"userA"が設定されている。

また、named_helperは、
controllerA_actionA_path(:username)
controllerA_actionA_url(:username)
controllerB_actionA_path(:username)
controllerB_actionA_url(:username)

が生成される。

2011/06/12

バジル

ベランダでバジルを育てています。
陽当たりのよい場所に移してあげたら、葉が増えてきました。
もう少ししたら食べてしまうつもりです。