haml条件if/else缩进

Mik*_*ike 5 haml ruby-on-rails

我有一种情况,我想只在count大于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
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我想要的一切,从开始%h3来在任#shades#shades.horizontalLine.second因这些不过如果和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
Run Code Online (Sandbox Code Playgroud)

但在这里我必须重复代码

我很困惑如何在rails中执行此操作而不重复从%h3两个div 开始的代码.

Win*_*eld 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
Run Code Online (Sandbox Code Playgroud)