Publication d'un plugin Ruby on Rails pour une gestion simplifiée des messages flash
Par Bounga le mardi, 21 octobre 2008, 12:08 - Développement - Lien permanent
J'utilise très régulièrement les messages flash de Rails pour informer les utilisateurs du bon déroulement des différentes actions et surtout pour leur donner des indications en cas de problème (champs non remplis, valeurs interdites, pages non-accessibles, …).
Pour me simplifier la vie, j'utilise un helper qui me permet de gérer les différents types de messages flash (notice, warning, errors) et de les afficher correctement en y affectant automatiquement la bonne classe CSS.
J'ai donc décidé d'extraire cet helper sous forme de plugin.
Comment ça marche ?
Ce plugin est une extension d'ActionView qui permet d'insérer dans vos vues le code nécessaire à l'affichage de vos messages flash en affectant, en fonction du type de flash, la classe CSS adéquate.
Il est dès lors possible d'utiliser les messages flash dans vos contrôleurs sans vous soucier de l'affichage. Vous pouvez par exemple faire appel au flash helper depuis votre layout, les messages seront donc affichables sur n'importe quel page.
Installation
Dans une console, à la racine de votre projet Rails, il vous suffit d'entrer la commande suivante :
$ cd vendor/plugins $ hg clone http://www.bitbucket.org/Bounga/flash-helper
Si vous souhaitez installer la CSS associée :
$ rake flash_helpers:install
Exemple d'utilisation
Dans votre layout :
display_flashes
Puis dans vos contrôleurs, vous pouvez maintenant utiliser :
flash[:notice] = "Utilisateur ajouté..." flash[:errors] = "La création a échouée !" flash[:errors] = @news.errors flash[:warning] = "Le nouvel utilisateur n'a pas de blog associé ..."
Paramètrer display_flashes
Les options pour les flash helpers sont optionnelles, leurs valeurs par défaut étant stockées dans le hash Bounga::FlashHelpers::ViewHelpers.flash_options. Vous pouvez écrire dans ce hash pour modifier les options par défaut de manière globale :
Bounga::FlashHelpers::ViewHelpers.flash_options[:notice_class] = 'my_notice'
Les options disponibles (et leurs valeurs par défaut) sont :
:list_class => 'errors_list' :notice_class => 'notice' :errors_class => 'errors' :warning_class => 'warning' :default_message => 'There are problems in your submission:'
Il suffit de modifier ces options dans "config/initializers/flash_helpers.rb" (ou simplement dans environment.rb pour les anciennes versions de Rails) pour qu'elles soient prises en compte.
display_flashes prend un paramètre optionnel qui permet de modifier directement :default_message, par exemple :
display_flashes("Des erreurs sont survenues :")
Et les sources ?!
Le projet est hébergé chez BitBucket. J'utilise le SCM Mercurial pour le contrôle des sources.
Vous pourrez donc le trouver à cette adresse : http://www.bitbucket.org/Bounga/flash-helper/.
Vous pouvez suivre les commits, avoir accès à de jolis graphes, récupérer les sources ou encore forker le projet !
Le mot de la fin
J'espère que ce plugin pourra vous être utile.
Tout rapports de problèmes, commentaires ou suggestions sont les bienvenues.
Commentaires
c'est souvent trèsv agréable de parcourir to blog
Merci, ça fait plaisir de lire des commentaires comme ça
Je t'ai proposé un petit "patch" pour l'utilisation de ce plugin dans un contexte Ajax. Au plaisir...
Bien vu Jonathan !
Je vais patcher.