6

重複の可能性:
Haml(Railsを使用)で条件がtrueの場合にクラスを追加します

リストアイテムをcurrent(を使用してclass=current)マークし、ナビゲーションバーで強調表示できるテンプレートを使用しています。

HAMLでは、これは次のようになります。

%li.current
  Menu item A
%li
  Menu item B
%li
  Menu item C

class=currentこのコードはSinatraビューにあり、ビューのパラメーターに応じて、プログラムでを追加したいと思います。

可能な限り最も近い方法でこれを行うにはどうすればよいですか?

現在、私は次のようにしています:

  - if section == "pages"
    %li.current
      %a{:href => "#pages"} Pages
  - else
    %li
      %a{:href => "#pages"} Pages

これは冗長すぎると感じます。

4

2 に答える 2

18

条件をインライン化して、%liにクラスが必要かどうかを判断できます

%li{ :class => ('current' if section == "pages") }
  %a{ :href => "#pages" } Pages
于 2012-09-07T05:12:16.253 に答える
3

sectionではなく別の文字列にすることができる場合は、 mguymonanswered"pages"のようなものを使用する必要があります。しかし、それが可能である場合、またはこのコードがより簡潔である場合:nilfalse"pages"

%li{ class:section && 'current' }
  %a{ :href => "#pages" } Pages

これは、HAMLがnilまたはfalse属性を省略し、Rubyのすべてのオブジェクトがtruefalseとを除いて、として評価されるという原則を使用しnilます。

したがって、がまたsectionはと異なる場合は、それ以外nilfalse場合はクラス属性を省略して出力section && 'current' します。'current'false

于 2012-09-07T05:25:58.270 に答える