Как получить текущий абсолютный URL в моем представлении Ruby on Rails?
request.request_uri возвращает только относительный URL.
request.request_uri
вы можете использовать любой для рельсов 3.2:
request.original_url or request.env["HTTP_REFERER"] or request.env['REQUEST_URI']
Я думаю, что это будет работать везде, где
"#{request.protocol}#{request.host}:#{request.port}#{request.fullpath}"
Для Rails 3.2 или Rails 4 Просто получите таким образом "request.original_url" Ссылка: Оригинальный метод URL
Для рельсов 3 Так как request.url устарел. Мы можем получить абсолютный путь путем объединения
"#{request.protocol}#{request.host_with_port}#{request.fullpath}"
Для рельсов 2
request.url
Вы можете использовать
request.original_url
или
"#{request.protocol}#{request.host_with_port}"
чтобы получить текущий URL.
Получить URL запроса без каких-либо параметров запроса.
def current_url_without_parameters request.base_url + request.path end
Для рельсов 3:
request.fullpath
Если вы хотите быть конкретным, то есть знаете, какой путь вам нужен:
link_to current_path(@resource, :only_path => false), current_path(@resource)
request.env["REQUEST_URI"]
работает в рельсах 2.3.4 проверено и не знает о других версиях.
Вы можете установить переменную на URI.parse(current_url), я пока не вижу здесь этого предложения, и оно работает для меня.
URI.parse(current_url)
Вы можете использовать:
request.full_path
Надеюсь, это решит вашу проблему.
Приветствия
Рельсы 4
Контроллер:
def absolute_url request.base_url + request.original_fullpath end
Action Mailer Заметные изменения в 4.2 выпуске :
link_to и url_for генерируют абсолютные URL по умолчанию в шаблонах, больше не нужно передавать only_path: false. (Commit)
Вид:
Если вы используете суффикс _url, сгенерированный URL является абсолютным. Используйте _path, чтобы получить относительный URL.
_url
_path
<%= link_to "Home", root_url %>
Для получения более подробной информации, перейдите по ссылке:
http://blog.grepruby.com/2015/04/absolute-url-full-url-in-rails-4.html