ruby-on-rails - redirect_to - render redirect rails
Enlace de regreso a la página visitada antes del formulario (6)
Tengo una página de listado, luego un formulario y luego una página de agradecimiento. Necesito poner un enlace en la página de agradecimiento que lleve al usuario de vuelta a la página en la que estaba antes del formulario que siempre varía. He intentado usar esto:
= link_to "Back", :back
Pero esto solo los lleva de regreso a la página anterior, entonces la forma.
Bien, puedes establecer un método en la página de formulario para recopilar esa url. La idea básica es usar una variable de sesión personalizada para almacenar la URL anterior y mantenerla en la próxima sesión.
Supongamos que la acción de su formulario es SomeController # new, luego
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
Luego, en la página de agradecimiento, puede obtener esto my_previous_url
por
session[:my_previous_url]
Esto debería ser capaz de adaptarse a su caso, la URL anterior hace dos páginas.
Descargo de responsabilidad: Esto no está verificado. Solo idea
Añadir
La sesión pertenece al controlador. No es un ayudante que puedes usar directamente a la vista. Necesita definir una variable de instancia en el controlador y luego puede usarla en la vista. Me gusta esto
# Controller
@back_url = session[:my_previous_url]
# View
<%= link_to "Back", @back_url %>
Como dices, puede ser una página diferente a la anterior, probablemente request_url puede ayudarte. Puedes guardar tu request_url en un parámetro y redireccionar a param_url si lo hay.
aquí hay una fuente que puede tomar como referencia. http://programming-tut.blogspot.com/2010/06/ruby-on-rails-request-url.html
Esto funciona para mí:
En el controlador de la vista anterior:
cookies[:original_referrer] = request.orignal_url
para establecer una cookie en el navegador con la URL de la página de origen
En el controlador desde la vista actual:
redirect_to cookies[:original_referrer]
Prueba esto
<%= link_to ''Back'', url_for(:back) %>
# if request.env["HTTP_REFERER"] is set to "http://www.example.com"
# => http://www.example.com
Puedes usar el ejemplo de Rails API:
<%= link_to "Back", :back %>
El uso de un símbolo: Atrás en lugar de un hash de opciones generará un enlace al referente (se utilizará un enlace posterior de JavaScript en lugar de un referente si no existe ninguno).
Si se usa en el Controlador, puede dirigir el uso de esta manera:
def some_action
# some code
redirect_to :back
end