In Python, ich kann dies tun:convert Rubin Hash Query-String-URL ... ohne diese eckigen Klammern
>>> import urlparse, urllib
>>> q = urlparse.parse_qsl("a=b&a=c&d=e")
>>> urllib.urlencode(q)
'a=b&a=c&d=e'
In Ruby [+ Rails] Ich kann nicht herausfinden, wie die gleiche Sache zu tun ohne "mein eigenes zu rollen", was merkwürdig erscheint. Der Rails Weg für mich nicht funktioniert - es fügt eckige Klammern die Namen der Abfrageparameter, die der Server am anderen Ende kann oder nicht unterstützen kann:
>> 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 mit den Werten einiger der Werte im query-string
Teil der URL meckern. Es schien natürlich auf der Standardbibliothek zu lehnen und/oder Rails, und schreiben Sie etwas wie folgt aus:
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 in der Tat ist 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 habe http://bit.ly/gc2Ylj, die mich dazu veranlasst, schnell schreiben https://gist.github.com/774142, die ich denke, * * leistet, was Ich will. Aber was ich wollte, war, dass ich nicht mein eigenes rollen sollte. :-) – Charlie