Ruby: Как превратить хеш в параметры HTTP? - PullRequest
196 голосов
/ 28 апреля 2009

Это довольно просто с простым хешем вроде

{:a => "a", :b => "b"} 

что бы перевести на

"a=a&b=b"

Но что вы делаете с чем-то более сложным, как

{:a => "a", :b => ["c", "d", "e"]} 

который должен перевести на

"a=a&b[0]=c&b[1]=d&b[2]=e" 

Или еще хуже, (что делать) с чем-то вроде:

{:a => "a", :b => [{:c => "c", :d => "d"}, {:e => "e", :f => "f"}]

Спасибо за очень ценную помощь в этом!

Ответы [ 12 ]

0 голосов
/ 08 ноября 2017

Лучше всего использовать Hash.to_params, который отлично работает с массивами.

{a: 1, b: [1,2,3]}.to_param
"a=1&b[]=1&b[]=2&b[]=3"
0 голосов
/ 04 апреля 2015

Мне нравится использовать этот драгоценный камень:

https://rubygems.org/gems/php_http_build_query

Пример использования:

puts PHP.http_build_query({"a"=>"b","c"=>"d","e"=>[{"hello"=>"world","bah"=>"black"},{"hello"=>"world","bah"=>"black"}]})

# a=b&c=d&e%5B0%5D%5Bbah%5D=black&e%5B0%5D%5Bhello%5D=world&e%5B1%5D%5Bbah%5D=black&e%5B1%5D%5Bhello%5D=world
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...