2010-09-04 4 views
0

J'ai mis un peu de code comme ceciQuelle est la meilleure façon de faire en sorte que les entrées flash des rails persistent jusqu'à la prochaine action?

flash[:task_loader] = flash[:task_loader] 
flash[:task_loader_params] = flash[:task_loader_params] 

en fonction de mon contrôleur qui toutes mes actions peuvent appeler. Cela a pour effet de conserver ces deux entrées flash dans le FlashHash. (Je présume que ce code plutôt bizarre fonctionne parce que le '=' fait plus que simplement assigner des valeurs.)

Ma question est, y at-il une meilleure façon de faire cela? Quelque chose comme

flash[:task_loader].pin 
+0

Je voudrais également savoir, et je n'ai pas réussi à faire fonctionner votre 1ère solution non plus? je ne comprends pas. – Alex

Répondre

0

Flash est un wrapper pratique pour stocker des données dans les cookies et les expirer dans la prochaine requête. Pour que vos messages de notification fonctionnent à travers 2 (ou plusieurs) cycles de réponse aux demandes.

Si vous voulez un peu plus de persistance, vous pouvez utiliser la session:

session[:task_loader] = my_task_loader 

Notez que l'un cookie peut contenir que des données 4Ko.

(je présume le code bizarre fonctionne parce que le « = » fait plus que Affectez des valeurs.)

C'est parce qu'il est non seulement une mission, mais une méthode []=, avec une signature similaire à celle-ci:

def []=(k, v) 
+0

J'utilise le flash dans ce cas pour stocker des informations sur ce qu'il faut charger lorsqu'une requête AJAX est faite pour recharger une liste d'éléments sur la page en cours. Je ne peux pas utiliser la session - mon application est confuse lorsque je fais des appels AJAX à partir de pages tirées de l'historique du navigateur. – Ben

Questions connexes