haml条件if / else缩进

时间:2011-09-01 01:01:28

标签: ruby-on-rails haml

我有一种情况,我只想在计数大于0时才将类添加到div标签

示例:

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

但在这里我必须重复代码

我对如何在rails中执行此操作感到困惑,而没有从%h3开始为两个div重复代码。

1 个答案:

答案 0 :(得分: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