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?)
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.
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(' '))
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.