У меня есть объект URI.Объединение и удаление Ruby URI
require 'uri'
uri = URI.parse 'http://example.com'
Мне нужно объединить некоторый путь к этому URI.
path = URI.escape('/?foo[123]=5')
uri.merge!(path)
И получать исключение:
URI::InvalidURIError: bad URI(is not URI?): /?foo[123]=5
Это происходит потому, что некоторые символы в пути считаются небезопасными ("[" и "]"), но эти символы Ware не спасся URI.escape.
Я решить эту проблему с помощью двух URI.escape вызовов:
path = URI.escape(URI.escape('/?foo[123]=5'), '[]')
uri.merge!(path)
Вопрос: почему URI.escape не выполняет, что избежать по умолчанию?
Или, может быть, есть лучший способ сделать это?
Спасибо за ссылку, похоже, что URI.escape будет обесцениваться. – taro