Ответ 1
Попробуйте использовать HTTP_REFERER
.
В Rails: request.referrer
или request.headers["HTTP_REFERER"]
Как получить предыдущий URL-адрес в Rails? Не URL-адрес, с которого вы получили запрос, но до этого?
Поскольку я получаю запрос AJAX, и мне нужен URL-адрес для страницы, на которой они сейчас находятся (или URL-адрес перед AJAX).
Попробуйте использовать HTTP_REFERER
.
В Rails: request.referrer
или request.headers["HTTP_REFERER"]
Используйте
<%= url_for(:back) %>
# if request.env["HTTP_REFERER"] is set to "http://www.example.com"
# => http://www.example.com
В веб-приложении нет такой вещи, как предыдущий URL. Протокол http не имеет состояния, поэтому каждый запрос не зависит друг от друга.
У вас может быть код Javascript, который отправит запрос назад, отправьте текущий url с запросом.
Просто наткнулся на этот вопрос, и это связано с чем-то простым, что я делал в настоящее время.
Простое решение, которое я использовал до использования при использовании приложений стиля ajax, - это хранить две переменные сеанса, которые содержат предыдущий и текущий запрос (со всеми параметрами). Я просто добавляю эти две строки в свой контроллер приложений
session[:previous_request_url] = session[:current_request_url]
session[:current_request_url] = request.url
http://railscasts.com/episodes/246-ajax-history-state → отлично подходит для ajax
http://ethilien.net/archives/better-redirects-in-rails/ → Вы можете ввести сеанс как можно больше предыдущего URL-адреса.
back_link = (request.referer.include?(request.domain) and request.referer != request.url) ? request.referer : nil