Ссылка на страницу, которую посетили до формы
У меня есть страница с листингом, затем форма, а затем страница с благодарностью. Мне нужно поместить ссылку на страницу благодарности, которая возвращает пользователя на страницу, на которой они были, до формы, которая всегда меняется. Я пробовал использовать это:
= link_to "Back", :back
Но это возвращает их только на предыдущую страницу, поэтому форма.
Ответы
Ответ 1
Ну, вы можете установить метод на странице формы, чтобы собрать этот URL-адрес. Основная идея - использовать пользовательскую переменную сеанса для хранения предыдущего URL-адреса и сохранить его в следующем сеансе.
Предположим, что ваше действие формы - SomeController # new, затем
class SomeController < ApplicationController
after_filter "save_my_previous_url", only: [:new]
def save_my_previous_url
# session[:previous_url] is a Rails built-in variable to save last url.
session[:my_previous_url] = URI(request.referer || '').path
end
end
Затем на странице благодарности вы можете получить этот my_previous_url
на
session[:my_previous_url]
Это должно соответствовать вашему делу, предыдущему URL-адресу две страницы назад.
Отказ от ответственности: это не проверено. Идея только.
Добавить
Сессия принадлежит контроллеру. Это не помощник, который вы можете использовать непосредственно в поле зрения. Вам нужно определить переменную экземпляра в контроллере, а затем вы можете использовать ее в поле зрения. Как этот
# Controller
@back_url = session[:my_previous_url]
# View
<%= link_to "Back", @back_url %>
Ответ 2
Попробуйте это
<%= link_to 'Back', url_for(:back) %>
# if request.env["HTTP_REFERER"] is set to "http://www.example.com"
# => http://www.example.com
подробнее.
Ответ 3
Так как вы говорите, это может быть другая страница перед формой, возможно, request_url может вам помочь. вы можете сохранить ваш request_url в параметре и перенаправить на param_url, если есть.
вот источник, который вы можете взять для справки.
http://programming-tut.blogspot.com/2010/06/ruby-on-rails-request-url.html
Ответ 4
Вы можете использовать пример из Rails API:
<%= link_to "Back", :back %>
Rails API Doc для link_to
Использование символа: назад Символ вместо хэша опций приведет к созданию ссылки на реферер (обратная ссылка JavaScript будет использоваться вместо реферера, если она не существует).
Ответ 5
Если вы используете в контроллере, вы можете использовать его следующим образом:
def some_action
# some code
redirect_to :back
end
Ответ 6
Это работает для меня:
В контроллере с предыдущего вида:
cookies[:original_referrer] = request.orignal_url
чтобы установить cookie в браузере с URL-адресом исходной страницы
В контроллере из текущего вида:
redirect_to cookies[:original_referrer]