J'ai un problème avec redirect_to :back
. Oui, ce sont des référents.
Je reçois souvent l'exception
(ActionController :: RedirectBackError) "Aucun HTTP_REFERER n'a été défini dans la requête pour cette action, donc redirect_to: back n'a pas pu être appelé avec succès. S'il s'agit d'un test, assurez-vous de spécifier request.env [\" HTTP_REFERER \ "]."
Je me rends compte que c'est le résultat d'un référent qui n'est pas disponible. Existe-t-il un moyen, par exemple, de définir une variable de session à chaque accès avec la dernière page visitée et, lorsque HTTP_REFERER n'est pas disponible, d'utiliser cette variable de session pour la redirection?
ruby-on-rails
ruby
http
user67050
la source
la source
Réponses:
Il est peu probable que vous faire une séance et ne pas avoir un referrer.
La situation dans laquelle un référent n'est pas défini n'est pas si rare et je sauve généralement cette attente:
Si vous faites cela souvent (ce que je pense être une mauvaise idée), vous pouvez l'envelopper dans une autre méthode comme le suggère Maran.
BTW Je pense que c'est une mauvaise idée car cela rend le flux utilisateur ambigu. Ce n'est que dans le cas d'une connexion que cela est raisonnable.
MISE À JOUR : Comme plusieurs personnes l'ont souligné, cela ne fonctionne plus avec Rails 5. Au lieu de cela, utilisez
redirect_back
, cette méthode prend également en charge une solution de secours. Le code devient alors:la source
rescue_from
si le contrôleur avait plusieursredirect_to :back
redirect_to (request.referrer || root_url)
Voici ma petite méthode redirect_to_back:
Vous pouvez passer une URL facultative pour aller ailleurs si http_refferrer est vide.
la source
Essayez ça! (Merci au plugin Authlogic )
la source
Fonctionnalité principale
redirect_back
est une fonctionnalité principale de Rails 5+, elle est disponible dans leActionController::Redirecting
module qui est déjà inclus dansApplicationController::Base
.EDIT: source
la source
redirect_to :back
.Il est peut-être tard mais j'aimerais partager ma méthode qui préserve également les options:
Vous pouvez l'utiliser comme:
la source
mise à jour: Rails 5 a ajouté la méthode redirect_back ( https://github.com/rails/rails/pull/22506/ ), mieux vaut simplement utiliser:
Pour les rails inférieurs à 5.0, vous pouvez toujours utiliser l'ancienne méthode ci-dessous:
similaire à la réponse de @ troex, ajoutez ceci à votre contrôleur d'application
puis utilisez-le dans votre manette
la source
Récemment, j'ai rencontré le même problème où je devais rediriger
:back
ou vers une page spécifique. Après être allé à beaucoup de solution, j'ai finalement trouvé celle-ci qui est simple et semble résoudre le problème:Si vous souhaitez utiliser les
session
détails, faites-le dans la partie autre du code.la source