2010-06-19 33 views
5

tengo este haml:etiquetas condicionales con HAML

.kudobox 
    %div.kudos= number_to_human_size_not_bytes kudos 
    %div= (kudos == 1 || kudos == -1) ? "kudo" : "kudos" 

Ahora quiero el .kudobox tienen un positive, negative o zero clase, dependiendo del número de felicitaciones:

-# < 0 kudos 
<div class="kudobox negative"> 

-# == 0 kudos 
<div class="kudobox zero"> 

-# > 0 kudos 
<div class="kudobox positive"> 

¿Cómo puedo ¿lograr esto? Gracias.


Sé que puedo

%div{ :class => (kudos < 0 ? "kudobox negative" : (kudos == 0 ? "kudobox zero" : (kudos > 0 ? "kudobox positive" : "kudobox impossible"))) } 

Pero no hay una manera más corto?

Respuesta

10

No he mirado demasiado de cerca tu código (es algo confuso para leer) para decirte si hay una forma más corta, pero puedo decir que estarías mucho mejor escribiendo un método de ayuda que que tengan todas las que la lógica en la vista. Un método de ayuda con una edad si o caso clara afirmación sería hacer el trabajo de forma más limpia, y luego la longitud no sería realmente un factor. De esta manera, se podría sustituir la declaración de largo condicional en su punto de vista con algo fácil en los ojos, como

%div{ :class => kudobox(kudos) } 
+0

Sí, hacer esto. Es un caso perfecto para un ayudante. –

0

Si desea código justo antes sin un ayudante, aquí estás:

.kudobox(class="#{kudos<0?'negative':kudos==0?'zero':'positive'}")