Comment définir une valeur de classe dynamique dans Haml

Si vous passez d’ERB à Haml dans vos projets Ruby on Rails, vous pourriez avoir besoin de représenter des valeurs dynamiques au sein de votre structure HTML. Plus précisément, un scénario courant consiste à définir une classe CSS de manière dynamique en fonction du statut d’un élément. Cet article de blog vous guidera sur la manière d’y parvenir avec Haml.

Le Problème

Vous pouvez avoir une ligne de code comme celle-ci dans votre modèle ERB :

<span class="<%= item.dashboardstatus.cssclass %>"><%= item.dashboardstatus.status %></span>

Ce code associe efficacement la classe CSS du statut actuellement assigné à un élément <span>. Lorsque vous essayez de convertir ce code en Haml, cela peut sembler un peu déroutant au début. Vous voulez vous assurer que le comportement dynamique reste intact tout en profitant de la syntaxe épurée de Haml.

La Solution en Haml

Haml simplifie les vues en vous permettant d’écrire moins de code tout en améliorant la lisibilité. Pour convertir la ligne ci-dessus en Haml, vous pouvez suivre cette approche :

%span{:class => item.dashboardstatus.cssclass}= item.dashboardstatus.status

Décomposez le Code Haml

Analysons ce segment de code Haml pour comprendre son fonctionnement :

  1. %span : Cette partie indique que vous voulez créer un élément HTML <span>.

  2. {:class => item.dashboardstatus.cssclass} : C’est ici que la magie opère ! Cette syntaxe définit l’attribut class du <span> à l’aide d’un hash Ruby. La clé :class indique que nous définissons une classe CSS, et la valeur est récupérée de manière dynamique depuis item.dashboardstatus.cssclass.

  3. = item.dashboardstatus.status : Le signe égal (=) signifie que ce qui suit doit être inséré comme le contenu du <span>, qui dans ce cas est la valeur de item.dashboardstatus.status.

Pourquoi Utiliser Haml ?

Utiliser Haml peut améliorer votre flux de développement pour plusieurs raisons :

  • Syntaxe Plus Propre : Haml utilise l’indentation pour indiquer le nesting, ce qui mène à moins d’encombrement par rapport à l’HTML traditionnel.
  • Moins de Code : Vous écrivez souvent moins de lignes de code tout en obtenant le même résultat, ce qui rend vos fichiers de vue plus faciles à lire et à maintenir.
  • Lisibilité Améliorée : La structure de Haml met l’accent sur l’importance de la mise en page et du design, facilitant ainsi la détection d’erreurs ou la compréhension du flux de la vue.

Conclusion

Définir une valeur de classe dynamique dans Haml peut être réalisé avec un ajustement simple par rapport à la syntaxe ERB. En utilisant la syntaxe de hash pour les attributs de classe combinée avec l’insertion dynamique de contenu Ruby, vous non seulement maintenez la fonctionnalité, mais améliorez également la lisibilité.

Maintenant que vous avez appris à convertir votre code ERB, vous trouverez plus facile de travailler avec Haml dans vos applications Rails. Acceptez le changement et profitez de la création de vues richement stylisées avec aisance !