Как изменить значение параметра url в ruby? - PullRequest
2 голосов
/ 10 марта 2011

Как лучше это сделать?

В идеале, используя какой-нибудь класс анализа URI, а не полагаться на мой собственный регулярный код

  url = "http://example.com"  //or "http://example.com?after=111"

  next_url = url.gsub(/after=\d+/,"666")
  if !next_url.eql?(url)
    if (new2.include?('?') == false)
      next_url = url + "?after=666"
    else
      next_url = url + "&after=666"
    end                                                                                                                                                                                        
  end                                                                                                                                                                                                                                                                                                                                                                                     
  puts next_url    

Ответы [ 3 ]

3 голосов
/ 10 марта 2011

Я рекомендую использовать гем Addressable , когда вы разбираете URL-адреса или собираете их вместе. Он очень всеобъемлющий и имеет query_values(options = {}) и query_values=(new_query_values) для извлечения всех компонентов запроса в хеш или для его перестроения из хеша. Он также будет обрабатывать декодирование и кодирование параметров по мере необходимости, то, что URI не сделает для вас.

0 голосов
/ 10 марта 2011

Существует библиотека Ruby с именем URI, которая обрабатывает парсинг и создание URL-адресов.

0 голосов
/ 10 марта 2011

Не уверен в своем вопросе, но вы, вероятно, хотите что-то подобное?

path, query = url.split('?')
query = (query||'').scan(/(.+)=(.+)/).map{|k, v| "#{k}=#{k == 'after' ? 666 : v}"}.join('&')
puts [path, query].join('?')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...