clase condicional dinámica delgada [cerrado]


100

Solo para ayudar a otros desarrolladores, porque no hay una pregunta similar sobre SO.

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

Respuestas:


142

Vea los ejemplos a continuación:

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

El mismo enfoque se puede utilizar para asignar valores dinámicos a otros atributos.


2
¿Cómo harías eso para múltiples condiciones?
Maxim Zubarev

Vea abajo en los comentarios a su respuesta.
Sergey Alekseev

3
Esto también puede agregar una clase, como: div.councilor class=(councilor.retired? ? "retired" : "") genera:div.councilor.retired
Terra Ashley

20

Utilizo una matriz de clases y un elemento nulo si no hay necesidad de incluir una clase en la lista, luego una matriz compacta para eliminar elementos nulos y finalmente unirlos todos.

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

12

Si tiene varias condiciones, estoy haciendo algo como

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

Aunque siento que es una mancha si is_bar? devuelve falso y el HTML generado da como resultado

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

(la mancha es el carácter en blanco después de foo). Si alguien tuviera una solución para eso, sería genial.


7
Tratar String#rstripen este caso con 2 condiciones: div class=((('foo ' if is_foo?) + ('bar' if is_bar?)).rstrip). O div class=([('foo' if is_foo?), ('bar' if is_bar?)].compact.join(' '))por varias condiciones.
Sergey Alekseev
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.