paranitips

Never stop learning! がモットーのゆるふわエンジニアブログ

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