Как извлечь параметры URL из URL с помощью Ruby или Rails?

У меня есть несколько URL-адресов, например

http://www.example.com/something?param1=value1&param2=value2&param3=value3

, и я хотел бы извлечь параметры из этих URL-адресов и получить их в хэше. Очевидно, я мог использовать регулярные выражения, но мне было просто интересно, есть ли более простые способы сделать это с помощью Ruby или Rails. Я ничего не нашел в модуле Ruby URI, но, возможно, я что-то упустил.

На самом деле, мне нужен метод, который бы это сделал:

extract_parameters_from_url("http://www.example.com/something?param1=value1&param2=value2&param3=value3")
#=> {:param1 => 'value1', :param2 => 'value2', :param3 => 'value3'}

Не могли бы вы дать несколько советов?

134
задан Donald Duck 27 November 2017 в 22:20
поделиться

3 ответа

Я думаю, вы хотите преобразовать любую заданную строку URL в HASH?

Вы можете попробовать http://www.ruby-doc.org/stdlib/libdoc/cgi/rdoc/classes/CGI. html # M000075

require 'cgi'

CGI::parse('param1=value1&param2=value2&param3=value3')

возвращает

{"param1"=>["value1"], "param2"=>["value2"], "param3"=>["value3"]}
156
ответ дан 23 November 2019 в 23:48
поделиться

В вашем контроллере вы должны иметь доступ к словарю (хэшу) под названием params. Итак, если вы знаете, как называется каждый параметр запроса, то просто сделайте params[:param1] для доступа к нему... Если вы не знаете, как называются параметры, вы можете обратиться к словарю и получить ключи.

Несколько простых примеров здесь.

-3
ответ дан 23 November 2019 в 23:48
поделиться

Мне понадобилось то же самое для недавнего проекта. Основываясь на решении Леви, вот более чистый и быстрый метод:

Rack::Utils.parse_nested_query 'param1=value1&param2=value2&param3=value3'
# => {"param1"=>"value1", "param2"=>"value2", "param3"=>"value3"}
148
ответ дан 23 November 2019 в 23:48
поделиться
Другие вопросы по тегам:

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