У меня есть несколько URL-адресов, например
http://www.example.com/something?param1=value1¶m2=value2¶m3=value3
, и я хотел бы извлечь параметры из этих URL-адресов и получить их в хэше. Очевидно, я мог использовать регулярные выражения, но мне было просто интересно, есть ли более простые способы сделать это с помощью Ruby или Rails. Я ничего не нашел в модуле Ruby URI
, но, возможно, я что-то упустил.
На самом деле, мне нужен метод, который бы это сделал:
extract_parameters_from_url("http://www.example.com/something?param1=value1¶m2=value2¶m3=value3")
#=> {:param1 => 'value1', :param2 => 'value2', :param3 => 'value3'}
Не могли бы вы дать несколько советов?
Я думаю, вы хотите преобразовать любую заданную строку URL в HASH?
Вы можете попробовать http://www.ruby-doc.org/stdlib/libdoc/cgi/rdoc/classes/CGI. html # M000075
require 'cgi'
CGI::parse('param1=value1¶m2=value2¶m3=value3')
возвращает
{"param1"=>["value1"], "param2"=>["value2"], "param3"=>["value3"]}
В вашем контроллере вы должны иметь доступ к словарю (хэшу) под названием params
. Итак, если вы знаете, как называется каждый параметр запроса, то просто сделайте params[:param1]
для доступа к нему... Если вы не знаете, как называются параметры, вы можете обратиться к словарю и получить ключи.
Несколько простых примеров здесь.
Мне понадобилось то же самое для недавнего проекта. Основываясь на решении Леви, вот более чистый и быстрый метод:
Rack::Utils.parse_nested_query 'param1=value1¶m2=value2¶m3=value3'
# => {"param1"=>"value1", "param2"=>"value2", "param3"=>"value3"}