このエントリーをはてなブックマークに追加
2013-07-25 09:10:00 +0900

Railsでは,たとえば複数のタグのついた記事をタグで絞り込んで表示するためのページを作りたい場合がある. こういうときに単純に以下のようなrouteを定義することができる.

match /tags/(:tag1/(:tag2(/:tag3)))

こうするとGET /tags/rails/route/tagのようなリクエストを受けてコントローラで

params[:tag1] => "rails"
params[:tag2] => "route"
params[:tag3] => "tag"

のように受け取ることはできるけど,とてもめんどくさいし,DRYでもないし,指定できるタグ数に上限がついてしまう. こういう場合に以下のようにrouteを設定するとすべてのパラメータをまとめて受けることが可能になる.

match /tags/*tags

この場合,GET /tags/tag1/tag2/tag3のリクエストを受けると,

params[:tags] => "tag1/tag2/tag3"

を受け取ることができる。




記事一覧へ