web-dev-qa-db-fra.com

classe conditionnelle mince et dynamique

Juste pour aider les autres développeurs, car il n'y a pas de question similaire sur SO.

div class=(is_active? ? 'active' : 'inactive')
div class=('active' if is_active?)
96
Sergey Alekseev

Voir les exemples ci-dessous:

div class=(is_active? ? 'active' : 'inactive')
div class=('active' if is_active?)

La même approche peut être utilisée pour affecter des valeurs dynamiques à d'autres attributs.

131
Sergey Alekseev

J'utilise un tableau de classes et un élément nil s'il n'est pas nécessaire d'inclure une classe dans la liste, puis compacte un tableau pour supprimer des éléments nil et enfin, les joindre tous ensemble.

div class=(["cday", "col-md-1", day.day == 1 ? "col-md-offset-#{day.cwday-1}" : nil].compact.join(' '))
18
Oleg Kr

Si vous avez plusieurs conditions je fais en ce moment quelque chose comme

div class=(('foo ' if is_foo?) + ('bar' if is_bar?))

Bien que je pense que c'est un défaut si is_bar? renvoie false et les résultats HTML générés dans

<div class="foo "></div>

(le défaut est le caractère vierge après le foo). Si quelqu'un avait une solution pour cela, ce serait génial.

11
Maxim Zubarev