How do I create a hash from a querystring in ruby?

ruby

Solution

Use `CGI::parse`:

CGI.parse('a=1&b=2&c=3&d')
# => {"a"=>["1"], "b"=>["2"], "c"=>["3"], "d"=>[]}
Hash[CGI.parse('a=1&b=2&c=3&d').map {|key,values| [key.to_sym, values[0]||true]}]
# => {:a=>"1", :b=>"2", :c=>"3", :d=>true}

Problem

I want to create a hash from a querystring. This is my method: ``` def qs2h(querystring) hashes = querystring.split('&').inject({}) do |result,query| k,v = query.split('=') if !v.nil? result.merge(k.to_sym => v) elsif !result.key?(k) result.merge(k.to_sym => true) else result end end hashes end qs2h('a=1&b=2&c=3&d') #=> {:a => "1", :b => "2", :c => "3", :d => true} ``` Is there any simpler method to do this in ruby?

Original source

Related problems