数年に渡ってメンテナンスされているようなRailsアプリケーションの config/routesは、 徐々にスパゲッティ化していく傾向があるように思えます。 ということで、今回は、 コントローラごとにRoutesをまとめて綺麗に記述する方法を紹介します。

方法は簡単です。with_optionsを使って、 prefixオプションを指定するようにします。

   1  map.with_options(:controller => 'posts',
   2      :name_prefix => 'posts_',
   3      :path_prefix => 'posts') do |posts|
   4    # posts_rss_path => 'posts/rss'
   5    posts.rss 'rss', :action => 'rss'
   6  end

しかし、全部のControllerにこれを書くのは面倒かもしれません。 ということで、プラグインを作りました。

このプラグインを使えば、以下のようにRoutesを書くことができます。

   1  map.with_controller('posts') do |posts|
   2    posts.rss # posts_rss_path => 'posts/rss'
   3  end

map.namespace(:posts)を使うと似たようなことができるのですが、 これは名前空間の作成に特化されているので、 今回の目的のために使用すると、若干思わしくない挙動をするようです。

posted by Png genki on Fri 14 Mar 2008 at 22:37

Comments:

or Preview
Social Bookmarks
  • Delicious
  • B_entry453
  • Clip_16_12_w
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ