68 votes

Le message flash de Rails reste pendant deux chargements de page

J'utilise une notification flash dans une application Rails, avec le code suivant :

flash[:notice] = "Sorry, we weren't able to log you in with those details."
render :action => :new

Le message flash s'affiche comme prévu sur l'action "nouveau", mais il s'affiche également sur la page suivante que l'utilisateur visite (quelle qu'elle soit). Il ne devrait s'afficher qu'une seule fois, mais quelque chose l'incite à rester en place.

130voto

Simone Carletti Points 77653

Il existe deux façons de résoudre ce problème. La première consiste à utiliser

flash.now[:notice]

lorsque votre flash doit être jeté à la fin de la requête en cours et n'est pas destiné à être utilisé après une redirection.

La seconde consiste à appeler

flash.discard(:notice)

à la fin de la demande. Le choix de la meilleure solution dépend du comportement de votre application.

http://api.rubyonrails.org/classes/ActionDispatch/Flash/FlashHash.html

15voto

Paul Farnell Points 340

Ok, j'ai résolu le problème. La façon de contourner le problème est d'utiliser :

flash.now[:notice] = "Sorry, we weren't able to log you in with those details."
render :action => :new

L'élément clé étant flash.now[:notice] au lieu de flash[:notice].

0voto

Ankit Wadhwana Points 137

Vous pouvez également appeler l'action comme suit

flash.now[:notice] = "Sorry, we weren't able to log you in with those details."
render 'new' #or render :new

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X