Juste pour aider d'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?)
Juste pour aider d'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?)
Réponses:
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 attribuer des valeurs dynamiques à d'autres attributs.
div.councilor class=(councilor.retired? ? "retired" : "")
génère:div.councilor.retired
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 un tableau compact pour supprimer les éléments nil et enfin les assembler.
div class=(["cday", "col-md-1", day.day == 1 ? "col-md-offset-#{day.cwday-1}" : nil].compact.join(' '))
Si vous avez plusieurs conditions, je suis en train de faire quelque chose comme
div class=(('foo ' if is_foo?) + ('bar' if is_bar?))
Bien que je pense que c'est une tache si is_bar? renvoie false et le HTML généré entraîne
<div class="foo "></div>
(le défaut est le caractère vide après le foo
). Si quelqu'un avait une solution pour cela, ce serait génial.
String#rstrip
dans ce cas avec 2 conditions: div class=((('foo ' if is_foo?) + ('bar' if is_bar?)).rstrip)
. Ou div class=([('foo' if is_foo?), ('bar' if is_bar?)].compact.join(' '))
pour plusieurs conditions.