Ruby: How to turn a hash into HTTP parameters?

后端 未结 14 1581
故里飘歌
故里飘歌 2020-12-07 06:46

That is pretty easy with a plain hash like

{:a => \"a\", :b => \"b\"} 

which would translate into

\"a=a&b=b\"
<         


        
14条回答
  •  失恋的感觉
    2020-12-07 07:27

    Steal from Merb:

    # File merb/core_ext/hash.rb, line 87
    def to_params
      params = ''
      stack = []
    
      each do |k, v|
        if v.is_a?(Hash)
          stack << [k,v]
        else
          params << "#{k}=#{v}&"
        end
      end
    
      stack.each do |parent, hash|
        hash.each do |k, v|
          if v.is_a?(Hash)
            stack << ["#{parent}[#{k}]", v]
          else
            params << "#{parent}[#{k}]=#{v}&"
          end
        end
      end
    
      params.chop! # trailing &
      params
    end
    

    See http://noobkit.com/show/ruby/gems/development/merb/hash/to_params.html

提交回复
热议问题