URLからクエリ文字列(GETパラメータ)を抽出してハッシュにする
環境
$ rails -v Rails 4.1.1 $ ruby -v ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin14.0]
方法
例えば、URLからクエリ文字列を抽出する場合はURIを使えば簡単。
uri_str = 'http://sample.com/path/to/hoge?a=1&b=2' uri = URI.parse(uri_str) uri.query #=> "a=1&b=2"
このクエリ文字列をハッシュにしたい場合はRack::Utilsを使います。
Rack::Utils.parse_nested_query(uri.query) #=> {"a"=>"1", "b"=>"2"}
余談
このハッシュにいろいろ処理して、クエリ文字列に戻してみたり。
new_query_hash = Rack::Utils.parse_nested_query(uri.query) new_query_hash['a'] = 3 new_query_hash['c'] = 4 new_query_hash.to_query #=> "a=3&b=2&c=4"
参考
parsing - Parse a string as if it were a querystring in Ruby on Rails - Stack Overflow