Tengo un problema con redirect_to :back
. Sí, son referencias.
A menudo obtengo la excepción
(ActionController :: RedirectBackError) "No se configuró HTTP_REFERER en la solicitud para esta acción, por lo que no se pudo llamar correctamente a redirect_to: back. Si se trata de una prueba, asegúrese de especificar request.env [\" HTTP_REFERER \ "].
Me doy cuenta de que esto se debe a que una referencia no está disponible. ¿Hay alguna forma de que, por ejemplo, se pueda establecer una variable de sesión en cada acceso con la última página visitada y, cuando HTTP_REFERER no esté disponible, utilizar esta variable de sesión para redirigir?
ruby-on-rails
ruby
http
user67050
fuente
fuente
Respuestas:
Es poco probable que hacer una sesión y no hacer tener una referencia.
La situación en la que un referente no está configurado no es tan infrecuente y generalmente rescato esa expectativa:
Si haces esto a menudo (lo cual creo que es una mala idea) puedes envolverlo en otro método como sugiere Maran.
Por cierto, creo que es una mala idea porque hace que el flujo de usuarios sea ambiguo. Solo en el caso de un inicio de sesión, esto es sensato.
ACTUALIZACIÓN : Como varias personas señalaron, esto ya no funciona con Rails 5. En su lugar, utilice
redirect_back
este método también admite un respaldo. El código luego se convierte en:fuente
rescue_from
si el controlador tuviera múltiplesredirect_to :back
redirect_to (request.referrer || root_url)
Aquí está mi pequeño método redirect_to_back:
Puede pasar una URL opcional para ir a otro lugar si http_refferrer está en blanco.
fuente
¡Trata eso! (Gracias al complemento Authlogic )
fuente
Característica principal
redirect_back
es una característica principal de Rails 5+, está disponible en elActionController::Redirecting
módulo que ya está incluido enApplicationController::Base
.EDITAR: fuente
fuente
redirect_to :back
.Tal vez sea tarde, pero me gustaría compartir mi método que también conserva las opciones:
Puedes usarlo como:
fuente
actualizado: Rails 5 agregó el método redirect_back ( https://github.com/rails/rails/pull/22506/ ), mejor solo use:
Para rieles inferiores a 5.0 aún se puede usar la forma anterior a continuación:
similar a la respuesta de @ troex, agregue esto a su controlador de aplicación
luego úsalo en tu controlador
fuente
Recientemente, encontré el mismo problema en el que tuve que redirigir
:back
o a una página específica. Después de buscar muchas soluciones, finalmente encontré esto que es simple y parece resolver el problema:Si desea utilizar los
session
detalles, hágalo en la parte else del código.fuente