Использование 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 с разных контроллеров / частичных (без перезагрузки).
Проблема заключалась в том, чтобы задать правильный путь для кнопки «Назад» в каждом элементе списка, чтобы кнопка «Назад» могла корректно работать как на своей собственной странице, так и на накопительной странице history .
В случае, если я использую request.fullpath , он возвращает путь последнего запроса JavaScript, который определенно не является URL-адресом, который я ищу.
Поэтому я использовал request.env ["HTTP_REFERER"] , в котором хранится URL-адрес последнего загруженного запроса.
Вот выдержка из частичного для принятия решения
- if request.env["HTTP_REFERER"].to_s.scan("history").length > 0
- back_url = user_history_issue_path(@user, list: "needed_type")
- else
- back_url = user_needed_type_issue_path(@user)
- remote ||= false
=link_to t("static.back"), back_url, :remote => remote