Как я могу получить текущий абсолютный URL в моем представлении Ruby on Rails?
request.request_uri
Только возвращает относительный URL .
ruby-on-rails
ruby
url
Якуб Арнольд
источник
источник
Ответы:
Для Rails 3.2 или Rails 4+
Вы должны использовать,
request.original_url
чтобы получить текущий URL.Этот метод описан в методе original_url , но если вам интересно, реализация такова:
Для Rails 3:
Вы можете написать
"#{request.protocol}#{request.host_with_port}#{request.fullpath}"
, такrequest.url
как теперь устарела.Для Rails 2:
Вы можете написать
request.url
вместоrequest.request_uri
. Это объединяет протокол (обычно http: //) с хостом и request_uri, чтобы дать вам полный адрес.источник
fullpath
НЕ включает протокол / домен / порт! Это не абсолютный URL!"http://#{request.host+request.fullpath}"
будет работать или нет, (если порт важен)"http://#{request.host}:#{request.port+request.fullpath}"
"http://#{request.host}:#{request.port}#{request.fullpath}"
request.url
устарела? Предложенное решение - просто длинный способ сказать, чтоrequest.url
уже делает; реализация это просто протокол + host_with_port + fullpath ( github.com/rails/rails/blob/… )Я думаю, что метод Ruby on Rails 3.0 сейчас
request.fullpath
.источник
Вы могли бы использовать
url_for(only_path: false)
источник
ПРЕДУПРЕЖДЕНИЕ О УСТАРЕВАНИИ : Использование #request_uri устарело . Вместо этого используйте полный путь.
источник
request.uri
и на это уже несколько раз указывалось в этом вопросе, но ... хорошо, спасибоЕсли вы используете Rails 3.2 или Rails 4, вам следует использовать
request.original_url
текущий URL.Документация по этому методу находится по адресу http://api.rubyonrails.org/classes/ActionDispatch/Request.html#method-i-original_url, но если вам интересно, реализация:
источник
Вы можете добавить этот метод current_url в ApplicationController, чтобы вернуть текущий URL и разрешить объединение других параметров
Пример использования:
источник
url_for params.merge(:format => "PDF", :only_path => false)
link_to
вы можете просто использоватьparams.merge
и пропустить вurl_for
целомДля Ruby on Rails 3:
Я запустил сеанс отладчика и запросил объект запроса:
источник
В Ruby on Rails 3.1.0.rc4:
источник
fullpath
не предоставляетabsolute URL
оригинального плаката.Мне нужен был URL приложения, но с подкаталогом. Я использовал:
источник
И вы можете легко добавить новый параметр:
источник
Я думаю, что request.domain будет работать, но что, если вы находитесь в подкаталоге вроде blah.blah.com? Нечто подобное может сработать:
Измените параметры в зависимости от вашей структуры пути.
Надеюсь, это поможет!
источник
Похоже,
request_uri
не рекомендуется в Ruby on Rails 3.источник
Используя Ruby 1.9.3-p194 и Ruby on Rails 3.2.6:
Если request.fullpath у вас не работает, попробуйте request.env ["HTTP_REFERER"]
Вот моя история ниже.
У меня возникла аналогичная проблема с определением текущего URL-адреса (который отображается в адресной строке пользователя в ее браузере) для кумулятивных страниц, которые объединяют информацию, например, с разных контроллеров
http://localhost:3002/users/1/history/issues
.Пользователь может переключаться на разные списки типов проблем. Все эти списки загружаются через Ajax с разных контроллеров / частичных (без перезагрузки).
Проблема заключалась в том, чтобы задать правильный путь для кнопки «Назад» в каждом элементе списка, чтобы кнопка «Назад» могла корректно работать как на своей собственной странице, так и в совокупной истории страниц. .
В случае, если я использую request.fullpath , он возвращает путь последнего запроса JavaScript, который определенно не является URL-адресом, который я ищу.
Поэтому я использовал request.env ["HTTP_REFERER"], в котором хранится URL-адрес последнего загруженного запроса.
Вот выдержка из частичного, чтобы принять решение
источник
Это работает для Ruby on Rails 3.0 и должно поддерживаться большинством версий Ruby on Rails:
источник
К сожалению, ни одно из предложений в этой ветке мне не помогло, кроме одного, где кто-то сказал, что он использовал отладчик, чтобы найти то, что он искал.
Я создал несколько пользовательских страниц ошибок вместо стандартных 404 и 500, но
request.url
закончил/404
вместо ожидаемых/non-existing-mumbo-jumbo
.Что мне нужно было использовать
источник
Если под относительным вы подразумеваете просто без домена, то посмотрите в
request.domain
.источник
источник
Вы можете использовать метод ruby:
который получит полный путь с базовым URL:
источник
:root_url
чтобы получить абсолютный URL? Предположим, я использую что-то вроде этогоsome_method(:products_brand_url, brand: brand, entity_name: "brand")
иsome_method
определяется как `def some_method (route, opts = {}) end` Я не хочу, чтобы мой маршрут выглядел как -http://localhost:3000/brands/brand_name?&entity_name="brand"
. Я хочу, чтобы маршрут выглядел такhttp://localhost:3000/brands/brand_name
. Я просто хочу,entity_name
чтобы он был частью хэша opts, а не в качестве параметра к абсолютному URL.root_url
.В Rails 3 вы можете использовать
http://apidock.com/rails/v3.2.8/ActionDispatch/Request/original_url
источник
Вы можете использовать любой для рельсов 3.2:
Я думаю, что это будет работать везде
источник
Rails 4.0
вы можете использовать
request.original_url
, вывод будет как приведенный ниже примеристочник
Для Rails 3.2 или Rails 4 Просто получите таким образом «request.original_url» Ссылка: Оригинальный метод URL
Для Rails 3 Поскольку request.url устарел. Мы можем получить абсолютный путь путем объединения
Для Rails 2
источник
если вы хотите быть конкретным, то есть знаете, какой путь вам нужен:
источник
Для рельсов 3:
источник
Работает в рельсах 2.3.4 проверено и не знает о других версиях.
источник
Получить URL запроса без каких-либо параметров запроса.
источник
Вы можете использовать
или
чтобы получить текущий URL.
источник
Ты можешь использовать:
или
Надеюсь, это решит вашу проблему.
ура
источник
Вы можете установить переменную на.
URI.parse(current_url)
Я не вижу здесь этого предложения, и оно работает для меня.источник
Чтобы получить абсолютный URL, который означает, что
from the root
он может отображаться следующим образомПомощник users_url генерирует URL, который включает протокол и имя хоста. Помощник users_path генерирует только часть пути.
источник