14th Fri
コントローラ毎にRoutesをまとめて(綺麗に)書く方法
数年に渡ってメンテナンスされているようなRailsアプリケーションのconfig/routesは、
徐々にスパゲッティ化していく傾向があるように思えます。
ということで、今回は、
コントローラごとにRoutesをまとめて綺麗に記述する方法を紹介します。
方法は簡単です。with_optionsを使って、
prefixオプションを指定するようにします。
rails>>
map.with_options(:controller => 'posts',
:name_prefix => 'posts_',
:path_prefix => 'posts') do |posts|
posts_rss_path => 'posts/rss'
posts.rss 'rss', :action => 'rss'
end
<<--
しかし、全部のControllerにこれを書くのは面倒かもしれません。
ということで、プラグインを作りました。
このプラグインを使えば、以下のようにRoutesを書くことができます。
rails>>
map.with_controller('posts') do |posts|
posts.rss # posts_rss_path => 'posts/rss'
end
<<--
map.namespace(:posts)を使うと似たようなことができるのですが、
これは名前空間の作成に特化されているので、
今回の目的のために使用すると、若干思わしくない挙動をするようです。
posted by
genki on Fri 14 Mar 2008 at 22:30 with 0 comments