Ruby on Rails: как вы получили предыдущий URL? - PullRequest
46 голосов
/ 11 января 2011

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

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

Ответы [ 5 ]

83 голосов
/ 10 января 2012

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

В рельсах: request.referrer или request.headers["HTTP_REFERER"]

16 голосов
/ 08 июля 2014

Использование

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

здесь более подробно.

6 голосов
/ 11 января 2011

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

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

3 голосов
/ 30 января 2016

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

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

session[:previous_request_url] = session[:current_request_url]
session[:current_request_url] = request.url
2 голосов
/ 11 января 2011

http://railscasts.com/episodes/246-ajax-history-state -> отлично подходит для ajax

http://ethilien.net/archives/better-redirects-in-rails/ -> Вы можете добавить в сеанс столько предыдущих ссылок, сколько хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...