2015-03-09 1 views
1

J'ai un contrôleur d'erreur personnalisé pour afficher les pages d'erreur dynamiques (pour 404, 422,500, etc), tout fonctionne bien mais je ne peux pas supprimer un message flash (selon http://blog.plataformatec.com.br/2012/01/my-five-favorite-hidden-features-in-rails-3-2/).Rails: supprimer un message flash dans un contrôleur d'erreur personnalisé

Y at-il un moyen de supprimer le flash à l'intérieur de mon contrôleur d'erreur personnalisé?

+0

Pouvez-vous nous montrer le fichier du contrôleur? –

+0

Ici, vous avez: https://gist.github.com/xxswingxx/b82296a69377879f666a C'est assez simple. Si j'essaie de "flash [: quelque chose] = nil" et que je recharge la page, la valeur du flash sera toujours là. – John

Répondre

5

Utilisation Rails 4:

class ErrorController < ActionController::Base 
    before_action { flash.clear } 

    # ... 
end 

Référence: http://api.rubyonrails.org/classes/ActionDispatch/Flash/FlashHash.html#method-i-clear

+0

Essayé, ne fonctionne pas. Le problème est que je retourne un statut d'erreur car cela rend les pages d'erreur personnalisées, donc flash, variables de session, etc sont en quelque sorte conservés par défaut par les rails et il ne permet pas les modifications. – John

+0

Ok. Vous ne pouvez pas supprimer le code de rendu 'flash' des pages d'erreur? – Rodrigo

+0

Je peux le supprimer mais uniquement localement. Si je recharge à nouveau la page et que j'atteigne à nouveau le contrôleur d'erreur, le message flash sera toujours là sans le redéfinir comme si la suppression n'avait aucun effet. – John