konvertieren ruby hash, URL-query-string ... ohne die eckigen Klammern

In Python, ich kann dies tun:

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

In Ruby[+Schienen] ich kann nicht herausfinden, wie zu tun die gleiche Sache, ohne "Rollen, meine eigene," das scheint seltsam. Die Schienen Weg doesnt Arbeit für mich-es fügt eckige Klammern um den Namen der Abfrage-Parameter, die der server am anderen Ende kann oder kann nicht unterstützen:

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

Mein Anwendungsfall ist einfach, dass ich möchte, um den dreck mit den Werten der einige der Werte, die in der query-string Teil der URL. Es schien, Natürliche und lehnen Sie sich an die standard-Bibliothek und/oder Schienen, und schreiben Sie etwas wie dieses:

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)

aber nur, wenn die resultierende URI ist in der Tat http://example.com/foo?a=b&a=c&a=d, und nicht http://example.com/foo?a[]=b&a[]=c&a[]=d. Gibt es einen richtigen oder besseren Weg, dies zu tun?

Ich wollte sehen, bit.ly/gc2Ylj, die mich dazu veranlasst, schnell zu schreiben gist.github.com/774142, die glaube leistet, was ich will. Aber, was ich wollte, war nicht zu Rollen, meine eigene. 🙂

InformationsquelleAutor Charlie | 2011-01-11

Schreibe einen Kommentar