[フレーム]

やむにやまれず

2006年創業の会社を経営する元プログラマ。現在従業員12名(内7名が欧米人)で元気にお仕事中。今はもうコードは書いてないので、いつか復帰したい。@sparklegate

route.rbは主にURIにマッチした目的のcontrollerを呼び出すのと、paramsへの値の格納をするために設定します。
Rubyの文法のおかげで、設定の柔軟性を持っているので、簡潔にかなり複雑なルールを記述できます。
あとはcontrollerの中身さえ書けば、ロジックが作れるわけで、素晴らしい仕組みです。

ですが、一生懸命組み立てたルールを、そのcontrollerの中身でまた使いたいこともあるでしょう。
今回はその方法を記述しておきます。
uri = URI.parse('http://www.example.com/controller/action/id?key=value')
new_params = ::ActionController::Routing::Routes.recognize_path(uri.path)

queryについては以下のように簡単に分解できると思うのでnew_paramsに追加してもいいかも。
uri.query.split('&').each{|kv|
k, v = kv.split('=',2)
new_params[k.to_sym]=v
} if uri.query

route.rbがディフォルト状態だとすると、new_paramsの中身は大体以下のようになります。
{
:controller => 'controller',
:action => 'action',
:id => 'id'
:key => 'value',
}

URLを操作する機能として使うと便利ッス。
タグ :
#rails
#route

コメントする

名前
最新記事
人気記事
QRコード
traq

AltStyle によって変換されたページ (->オリジナル) /