with redirect_to rails method entre diferencia ruby-on-rails url redirect request refer

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 %>



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

aquí hay más detalles.


Puedes usar el ejemplo de Rails API:

<%= link_to "Back", :back %>

Rails API Doc para link_to

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