convierta el hash de ruby en una cadena de consulta de URL ... ingenio, hout esos corchetes

En Python, puedo hacer esto:

>>> import urlparse, urllib
>>> q = urlparse.parse_qsl("a=b&a=c&d=e")
>>> urllib.urlencode(q)
'a=b&a=c&d=e'

En Ruby [+ Rails] no puedo entender cómo hacer lo mismo sin "rodar el mío", lo que parece extraño. El modo Rails no funciona para mí: agrega corchetes a los nombres de los parámetros de consulta, que el servidor del otro extremo puede o no admitir:

>> q = CGI.parse("a=b&a=c&d=e")
=> {"a"=>["b", "c"], "d"=>["e"]}
>> q.to_params
=> "a[]=b&a[]=c&d[]=e"

Mi caso de uso es simplemente que deseo manipular los valores de algunos de los valores en elquery-string porción de la URL. Parecía natural apoyarse en la biblioteca estándar y / o Rails, y escribir algo como esto:

uri = URI.parse("http://example.com/foo?a=b&a=c&d=e")
q = CGI.parse(uri.query)
q.delete("d")
q["a"] << "d"
uri.query = q.to_params # should be to_param or to_query instead?
puts Net::HTTP.get_response(uri)

pero solo si el URI resultante es de hechohttp://example.com/foo?a=b&a=c&a=d, y nohttp://example.com/foo?a[]=b&a[]=c&a[]=d. ¿Hay una forma correcta o mejor de hacer esto?

Respuestas a la pregunta(5)

Su respuesta a la pregunta