require 'uri'
require 'cgi'
# use URI.parse to parse the URL into its constituent parts - host, port, query string..
uri = URI.parse(@object.location)
# then use CGI.parse to parse the query string into a hash of names and values
uri_params = CGI.parse(uri.query)
uri_params['v'] # => ["xxxxxxxxxxxxxxxxxxx"]
Обратите внимание, что возвращаемое значение от CGI.parse
равно Hash
от Strings
до Arrays
, поэтому он может обрабатывать несколько значений для одного и того же имени параметра. Для вашего примера вы хотели бы uri_params['v'][0]
.
Также обратите внимание, что Hash
, возвращаемый CGI.parse
, вернет []
, если запрошенный ключ не найден, поэтому uri_params['v'][0]
вернет либо значение, либо nil
, если URL не содержит v
параметр.