in Python, posso fare questo:convertito rubino hash per URL string query ... senza quelle parentesi quadre
>>> 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] Io non riesco a capire come fare la stessa cosa senza "rolling my own", che sembra strano. Il modo in Rails non funziona per me - aggiunge parentesi quadre per i nomi dei parametri di query, che il server su l'altra estremità può o non può sostenere:
>> q = CGI.parse("a=b&a=c&d=e")
=> {"a"=>["b", "c"], "d"=>["e"]}
>> q.to_params
=> "a[]=b&a[]=c&d[]=e"
mio caso d'uso è semplicemente che io desidera eliminare i valori di alcuni valori nella porzione query-string
dell'URL. E 'naturale per appoggiarsi alla libreria standard e/o Rails, e scrivere qualcosa del genere sembrava:
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)
ma solo se l'URI risultante è infatti http://example.com/foo?a=b&a=c&a=d
, e non http://example.com/foo?a[]=b&a[]=c&a[]=d
. C'è un modo corretto o migliore per farlo?
ho visto http://bit.ly/gc2Ylj, che mi ha spinto a scrivere velocemente https://gist.github.com/774142, che I * credo * compie ciò Voglio. Sebbene quello che volevo era * non * rotolare il mio. :-) – Charlie