可能重复:
Append class if condition is true in Haml (with Rails)
我正在使用一个模板,允许您将列表项标记为current
(使用class=current
),并在导航栏中突出显示它。
在HAML中,这看起来像:
%li.current
Menu item A
%li
Menu item B
%li
Menu item C
我在Sinatra视图中有这个代码,并希望以编程方式添加class=current
,具体取决于视图的参数。
我如何以最好的方式做到这一点?
目前,我这样做:
- if section == "pages"
%li.current
%a{:href => "#pages"} Pages
- else
%li
%a{:href => "#pages"} Pages
感觉太冗长了。
答案 0 :(得分:18)
您可以内联条件以确定%li
是否需要该类%li{ :class => ('current' if section == "pages") }
%a{ :href => "#pages" } Pages
答案 1 :(得分:3)
如果section
可以是另一个字符串而不是"pages"
,则应使用mguymon之类的答案。但如果它只能是nil
,false
或"pages"
,则此代码更简洁:
%li{ class:section && 'current' }
%a{ :href => "#pages" } Pages
这使用HAML省略nil
或false
属性的原则,并且Ruby中的每个对象都被评估为true
,但:false
和nil
除外。
因此,如果section
与nil
或false
不同,则section && 'current'
输出'current'
,否则输出false
省略class属性