2011-09-01 103 views
5

我有我想要的一個類添加到一個div標籤,只有當計數大於0HAML有條件的if/else壓痕

例的情況:

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

在這個例子中,我想從%h3開始的所有內容都根據#shades#shades.horizontalLine.second而定,但這取決於if和else語句的評估情況。

的解決辦法是:

- @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 

但這裏我要重複代碼

我在如何做到這一點的軌道,而不必重複從%h3開始兩者的div代碼難倒。

回答

8

您可以將類設置爲一個變量保存基於該指數的類名晾乾起來:

- @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