Haml条件语句if/else的缩进

5

我有一个情况,希望只在计数大于0时将类添加到

标签中。

例如:

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

在这个例子中,我希望从%h3开始的所有内容都会根据if和else语句的评估结果,放在#shades#shades.horizontalLine.second下面。解决方法是:
- @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开始的代码的困境中。

1个回答

8
你可以将class设置为一个变量,该变量基于索引保存类名,以此来DRY it up(减少重复代码):
- @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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接