У меня есть строка как это:
"foo=bar&bar=foo&hello=hi"
Делает Ruby on Rails, предоставляют методы для парсинга этого, как будто это - querystring, таким образом, я получаю хеш как это:
{
:foo => "bar",
:bar => "foo",
:hello => "hi"
}
Или я должен записать это сам?
Обратите внимание на то, что строка выше не является реальным querystring от URL, а скорее строкой, сохраненной в cookie от Подключения Facebook.
Ответ зависит от версии Rails, которую вы используете. Если вы используете 2.3 или более позднюю версию, используйте встроенный парсер Rack для парсов
Rack::Utils.parse_nested_query("a=2") #=> {"a" => "2"}
Если вы используете более старые версии Rails, вы действительно можете использовать CGI::parse
. Обратите внимание, что обработка хэшей и массивов в разных модулях различается, поэтому вам нужно проверить, являются ли получаемые данные корректными для выбранного вами метода.
Вы также можете включить Rack::Utils
в свой класс для сокращенного доступа.
CGI::parse("foo=bar&bar=foo&hello=hi")
Дает вам
{"foo"=>["bar"], "hello"=>["hi"], "bar"=>["foo"]}