метод ниже некоторый код, который я унаследовал и он должен удалить параметры из URL, но это нарушение со следующей ошибкой:Не уверен, что этот метод рубин делает
ArgumentError: the input of URI.decode_www_form must be ASCII only string /home/fatman/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/uri/common.rb:969:in `decode_www_form'
def self.removeUnnecessaryGetParams(url, removeParams = ["s"], whiteListParams = nil)
uri = Addressable::URI.parse(url)
#Get rid of UTM parameters & S parameters
if(uri.query != nil)
if(whiteListParams != nil)
cleanKeyVals = URI.decode_www_form(uri.query).reject{|k, _| !whiteListParams.include?(k)}
else
cleanKeyVals = URI.decode_www_form(uri.query).reject{|k, _| k.start_with?("utm_") or removeParams.include?(k)}
end
uri.query = URI.encode_www_form(cleanKeyVals)
end
return uri.to_s.split("#")[0].chomp("?")
end
1). Мой вопрос: как именно работает этот метод? Не уверен, что делают линии, которые назначают cleankeyVals
(мои недостатки в рубиновых знаниях).
2). Как исправить эту проблему только в ASCII?
Вы посмотрели на строку, которая вызывает эту ошибку? По-видимому, вы пытаетесь дать ему символы, отличные от ASCII. – Carcigenicate
Соглашения об именах, использование '! = Nil' и другие причуды предполагают, что это не было написано кем-то, кто действительно получает Ruby. Также стоит обновить Ruby, если у вас есть шанс. Следите за тем, чтобы избежать проблем с безопасностью. – tadman