- カテゴリ
- Ruby
route.rbは主にURIにマッチした目的のcontrollerを呼び出すのと、paramsへの値の格納をするために設定します。
Rubyの文法のおかげで、設定の柔軟性を持っているので、簡潔にかなり複雑なルールを記述できます。
あとはcontrollerの中身さえ書けば、ロジックが作れるわけで、素晴らしい仕組みです。
ですが、一生懸命組み立てたルールを、そのcontrollerの中身でまた使いたいこともあるでしょう。
今回はその方法を記述しておきます。
queryについては以下のように簡単に分解できると思うのでnew_paramsに追加してもいいかも。
route.rbがディフォルト状態だとすると、new_paramsの中身は大体以下のようになります。
URLを操作する機能として使うと便利ッス。
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.queryroute.rbがディフォルト状態だとすると、new_paramsの中身は大体以下のようになります。
{
:controller => 'controller',
:action => 'action',
:id => 'id'
:key => 'value',
}URLを操作する機能として使うと便利ッス。
[フレーム]
コメントする