web-dev-qa-db-fra.com

Comment puis-je recharger la page actuelle dans Ruby on Rails?

J'ai actuellement une fenêtre de connexion dans ma barre d'en-tête qui se trouve sur chaque page de mon site Web. Je veux pouvoir recharger la page actuelle sur laquelle la personne se trouve après une connexion réussie. Comment faire cela dans le contrôleur?

def create
  #declaring and defining user variable stuff
  if user.save
    #reload current page <--how do I do this?
  end
end

Merci

43
EverTheLearner

Pour mon application, j'utilise redirect_to :back et ça fait l'affaire. Cependant, je doute que cela puisse avoir une erreur dans un ou des cas d'utilisation non généraux (l'utilisateur est venu d'une page spéciale?) Mais je ne l'ai pas trouvé jusqu'à présent dans mon application.

49
datalost

Si vous cherchez un moyen d'actualiser la page (généralement redirect_to :back) Avec une demande XHR, vous n'avez pas besoin de chercher un moyen de changer le type de réponse - dites simplement à la page de recharger avec JS en ligne.

format.js {render inline: "location.reload();" }

Comme Elena mentionne, cela devrait aller dans un bloc respond_to, comme ceci:

respond_to do |format|
  format.js {render inline: "location.reload();" }
end
40
Archonic

Dans Rails 5 redirect_to :backest amélioré par:

    redirect_back(fallback_location: root_path)
15
bishal

Archonic la réponse ci-dessus a fonctionné pour moi. Cependant, dans Rails 3, j'ai dû le placer dans un respond_to bloquer afin d'éviter une erreur "ArgumentError (trop peu d'arguments)":

respond_to do |format|
  format.js {render inline: "location.reload();" }
end
12

Depuis Rails 5 (ou peut-être des versions plus anciennes), vous avez un request.referrer méthode. Vous redirigez simplement du contrôleur vers le référent et cela ouvre la page d'où provient la demande.

redirect_to request.referrer, notice: "You're being redirected"

9
Shobhit

Rails 5 a introduit une fonction alternative:

redirect_back(fallback_location: root_path)

Il redirige chaque fois que HTTP_REFERER est connu. Sinon, il redirige vers le fallback_location.

Le redirect_to :back est déconseillé dans Rails 5.0 https://github.com/Rails/rails/pull/22506 et supprimé depuis Rails = 5,1

4
Kiryl Plyashkevich