整洁的方式有条件地测试是否在HAML模板添加类[复制](Neat way to conditiona

2019-09-22 05:27发布

可能重复:
附加类,如果条件Haml的是真实的(使用Rails)

我使用的模板,使您可以标记列表项为current (使用class=current ),在导航栏中突出显示。

在HAML,这看起来像:

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

我有一个西纳特拉鉴于这种代码,并希望以编程方式添加class=current ,根据参数的视图。

如何做到这一点的最巧妙的方法可以吗?

目前,我做这样的:

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

这感觉太冗长。

Answer 1:

您可以内嵌条件,以确定是否需要对黎%的类

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


Answer 2:

如果section可以是另一个字符串,而不是"pages" ,你应该使用类似mguymon回答。 但是,如果它只能是nilfalse"pages"这样的代码更加简洁:

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

这种使用的原则是HAML省略nilfalse属性,并在Ruby中每个对象evalueted为true ,除非: falsenil

所以,如果section是不同于nilfalse ,那么section && 'current'输出'current'否则输出false省略类属性。



文章来源: Neat way to conditionally test whether to add a class in HAML template [duplicate]