Подтвердить что ты не робот

Ссылка на страницу, которую посетили до формы

У меня есть страница с листингом, затем форма, а затем страница с благодарностью. Мне нужно поместить ссылку на страницу благодарности, которая возвращает пользователя на страницу, на которой они были, до формы, которая всегда меняется. Я пробовал использовать это:

= link_to "Back", :back

Но это возвращает их только на предыдущую страницу, поэтому форма.

4b9b3361

Ответ 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]