obtenir le hachage flash pour persister dans les redirections

Mon cas d’utilisation de base est de faire un traitement, de définir flash[:notice] , puis de redirect vers une nouvelle page. D’après ce que je peux dire, les redirections réinitialisent la balise flash (corrigez-moi si je me trompe). Y a-t-il un moyen de gagner en persistance? L’utilisation de sessions n’est pas une option, et j’ai piraté le problème en utilisant des cookies, mais je pense qu’il doit y avoir une meilleure solution.

Le hachage flash persiste pour exactement une redirection ou un rendu. Donc, vous devriez être bien avec les parameters par défaut.

Si vous devez conserver le hachage flash pour une autre demande / redirection, vous pouvez appeler flash.keep.

 flash.keep # keep the entire flash hash around for an extra request. flash.keep(:notice) # keep just flash[:notice] for an extra request. 

Quelque chose à savoir dans Rails v3.2.1 au moins, c’est que le flash persistera à travers une redirection s’il n’est pas référencé par au moins une redirection et chargera la même vue après. Ceci est un pseudo code de mon expérience récente:

 def some_action (code that may set a flag to redirect 1 time) redirect_to action_path if(redirect_flag) .... end 

En exécutant cela, le flash [: message] serait présent indépendamment de la redirection.

 def some_action logger.debug("Flash[:message] #{flash[:message]}") (code that may set a flag to redirect 1 time) redirect_to action_path if(redirect_flag) .... end 

Au cours du débogage avec l’enregistreur faisant référence au flash [], il ne s’afficherait que lorsque la redirection ne s’est pas produite. Je pouvais voir que cela posait problème si vous aviez ajouté une référence pour flasher avant une redirection et l’avoir perdue sur toute la ligne sans raison apparente.

Voir ruby ​​docs ici (Méthode protégée par une instance: Utiliser en bas)