Я пытаюсь найти надежный метод объединения частичного пути URL сегменты вместе. Есть ли быстрый способ сделать это?
Я пробовал следующее:
puts URI::join('resource/', '/edit', '12?option=test')
Ожидаю:
resource/edit/12?option=test
Но получаю сообщение об ошибке:
`merge': both URI are relative (URI::BadURIError)
Я использовал File.join ()
в прошлое для этого, но что-то не кажется правильным в использовании библиотеки файлов для URL-адресов.
Мое понимание URI::join
- то, что это думает как веб-браузер, делает.
Для оценки его укажите умственный веб-браузер на первый параметр и продолжайте нажимать на ссылки, пока Вы не просмотрите к последнему параметру.
, Например, URI::join('http://example.com/resource/', '/edit', '12?option=test')
, Вы просмотрели бы как это:
/edit
(файл в корне сайта) 12?option=test
(файл в том же каталоге как edit
) , Если бы первая ссылка была /edit/
(с запаздывающей наклонной чертой), или /edit/foo
, то следующая ссылка была бы относительно /edit/
, а не /
.
Эта страница возможно объясняет это лучше, чем я могу: , Почему URI.join таким образом парадоксален?