Проанализируйте строку, как будто это был querystring в Ruby on Rails

У меня есть строка как это:

"foo=bar&bar=foo&hello=hi"

Делает Ruby on Rails, предоставляют методы для парсинга этого, как будто это - querystring, таким образом, я получаю хеш как это:

{
    :foo => "bar",
    :bar => "foo",
    :hello => "hi"
}

Или я должен записать это сам?

Править

Обратите внимание на то, что строка выше не является реальным querystring от URL, а скорее строкой, сохраненной в cookie от Подключения Facebook.

68
задан Julik 23 July 2016 в 21:05
поделиться

2 ответа

Ответ зависит от версии Rails, которую вы используете. Если вы используете 2.3 или более позднюю версию, используйте встроенный парсер Rack для парсов

 Rack::Utils.parse_nested_query("a=2") #=> {"a" => "2"}

Если вы используете более старые версии Rails, вы действительно можете использовать CGI::parse. Обратите внимание, что обработка хэшей и массивов в разных модулях различается, поэтому вам нужно проверить, являются ли получаемые данные корректными для выбранного вами метода.

Вы также можете включить Rack::Utils в свой класс для сокращенного доступа.

150
ответ дан 24 November 2019 в 14:04
поделиться

CGI::parse("foo=bar&bar=foo&hello=hi")

Дает вам

{"foo"=>["bar"], "hello"=>["hi"], "bar"=>["foo"]}
32
ответ дан 24 November 2019 в 14:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: