Ruby on Rails Tips

routes.rbで複数ルートに共通の設定をまとめて書くには

routes.rbでは、複数のルートで共通の設定をしたい場合があります。例えば、多くのURLでユーザー名(:user)をパスの先頭につけたいとしましょう。次のようにそれぞれのルートを記述するのはDRYではないし、うっかり付けるのを忘れる可能性があります。

  map.resources :diaries, :path_prefix => ":user"
  map.resource :profile, :path_prefix => ":user"
  map.resources :friends, :path_prefix => ":user"

このようなときは、with_optionsを使って次のように書くと見やすくなります。間違いも起こりにくなって便利です。

  map.with_options :path_prefix => ":user" do |user|
    user.resources :diaries
    user.resource :profile
    user.resources :friends
  end