2011-09-01 26 views
5

Tengo una situación donde quiero agregar una clase a una etiqueta div sólo cuando el recuento es mayor que 0haml condicional if/else muesca

Ejemplo:

- @color.shades.each_with_index do |shade, index| 
    - if index == 0 
     #shades 
    - else 
     #shades.horizontalLine.second 
    %h3 something 
    %dl 
     %dt some 
     %dd some1 

En este ejemplo quiero todo a partir de %h3 bajo #shades o #shades.horizontalLine.second dependiendo de sin embargo, las declaraciones if if y else evalúan.

solución es:

- @color.shades.each_with_index do |shade, index| 
    - if index == 0 
     #shades 
      %h3 something 
      %dl 
       %dt some 
       %dd some1 
    - else 
     #shades.horizontalLine.second 
      %h3 something 
      %dl 
       %dt some 
       %dd some1 

pero aquí tengo que repetir código

estoy confundido en cómo hacer esto en los carriles sin repetir el código a partir de %h3 tanto para los divs.

Respuesta

8

Puede establecer la clase a una variable que contiene los nombres de las clases basadas en el índice de secarlo hasta:

- @color.shades.each_with_index do |shade, index| 
    - shade_classes = index == 0 ? '' : 'horizontalLine second' 
    #shades{ :class => shade_classes } 
     %h3 something 
     %dl 
      %dt some 
      %dd some1