如何从ruby中的查询字符串创建哈希?

我想从查询字符串创建一个哈希。 这是我的方法:

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} 

在ruby中有没有更简单的方法呢?

使用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}