Ruby on Rails: Как вы получаете предыдущий URL?

Как получить предыдущий URL-адрес в Rails? Не URL-адрес, с которого вы получили запрос, но до этого?

Поскольку я получаю запрос AJAX, и мне нужен URL-адрес для страницы, на которой они сейчас находятся (или URL-адрес перед AJAX).

Ответ 1

Попробуйте использовать HTTP_REFERER.

В Rails: request.referrer или request.headers["HTTP_REFERER"]

Ответ 2

Используйте

<%= url_for(:back) %>
# if request.env["HTTP_REFERER"] is set to "http://www.example.com"
# => http://www.example.com

подробнее.

Ответ 3

В веб-приложении нет такой вещи, как предыдущий URL. Протокол http не имеет состояния, поэтому каждый запрос не зависит друг от друга.

У вас может быть код Javascript, который отправит запрос назад, отправьте текущий url с запросом.

Ответ 4

Просто наткнулся на этот вопрос, и это связано с чем-то простым, что я делал в настоящее время.

Простое решение, которое я использовал до использования при использовании приложений стиля ajax, - это хранить две переменные сеанса, которые содержат предыдущий и текущий запрос (со всеми параметрами). Я просто добавляю эти две строки в свой контроллер приложений

session[:previous_request_url] = session[:current_request_url]
session[:current_request_url] = request.url

Ответ 6

back_link = (request.referer.include?(request.domain) and request.referer != request.url) ? request.referer : nil