La compréhension avant et after_filter
J'ai le code suivant juste après mon contrôleur de déclaration de classe
before_filter :load_form, :except => [:create, :update, :delete]
after_filter :load_form, :only => [:create, :update, :delete]
def load_form
@severities = Severity.all
@severity = Severity.new
end
- Je obtenir la liste des degrés de gravité lorsque la page se charge correctement, ce qui signifie que le before_filter est de travail. Cependant, après l'appel d'une méthode telle que la création de la liste des sévérités revient toujours nul. Je pense que je suis probablement manque quelques chose fondamentale sur les filtres. Quelqu'un peut-il m'aider à comprendre pourquoi le after_filter ne fonctionne pas?
OriginalL'auteur Jason Yost | 2011-04-10
Vous devez vous connecter pour publier un commentaire.
Si vous vous attendiez à voir les variables de votre point de vue qui lui ont été assignées dans votre "après", filtre, ça ne marchera pas car le filtre n'est pas exécutée jusqu'à ce que votre point de vue a été complètement transformés.
Bien avant, ou autour. Quelle était la raison pour laquelle vous avez pensé que vous devriez utiliser un après le filtre?
J'ai pensé depuis que je suis réglage de l' @gravité de l'objet à nouveau que si j'ai utilisé before_filter je ne serais jamais en mesure de sauver, puisque l'objet serait toujours ensemble à nouveau avant que j'ai pu accéder aux paramètres de l'enregistrer.
Pourquoi pensez-vous que l'affectation de la valeur de
@severity
est quelque chose qui doit se passer dans un "avant" filtre plutôt que dans la méthode de l'action? En fait, sauf si il y a une raison que tous (ou presque tous) les actions des besoins de l'ensemble de la liste de la gravité, il n'y a pas beaucoup de raisons de céder@severities
dans un filtre.Les vues sont rendus via ajax, donc il y a un formulaire pour créer et mettre à jour ainsi que la liste de la gravité sur une seule page. chaque action doit spécifier la nouvelle et de la collecte des sévérités sinon null exception est levée. Plutôt que de déclarer dans chaque action, je préfère garder les choses SÈCHES et ont les valeurs définies sur chaque action à l'aide d'un filtre.
OriginalL'auteur Steve Jorgensen