与Ruby的CGI.parse方法完全相反?

Leo*_*sov 10 ruby cgi

我想对查询参数进行一些清理.

我解析查询CGI.parse,然后我删除一些参数,但我找不到相反的方法来构建查询.

我真的不想做类似的事情

params.map{|n,v| "#{CGI.escape n}=#{CGI.escape v.to_s}"}.join("&")
Run Code Online (Sandbox Code Playgroud)

必须有一个更简单的方法.在那儿?

uji*_*fgc 6

URI模块中有一个很好的方法:

require 'uri'
URI.encode_www_form("q" => "ruby", "lang" => "en")  #=> "q=ruby&lang=en"
Run Code Online (Sandbox Code Playgroud)


Leo*_*sov 2

虽然没有更好的答案,但我会提出我现在正在使用的方法。

def build_query(params)
  params.map do |name,values|
    values.map do |value|
      "#{CGI.escape name}=#{CGI.escape value}"
    end
  end.flatten.join("&")
end
Run Code Online (Sandbox Code Playgroud)