我有一个条件,如果action_name包含“index”,那么第二个类只应返回“index”,否则,将其设置为action_name。
我正在尝试这些方面:
- if action_name =~ /.*index.*/
%body{ :class => "#{controller_name} index" }
- else
%body{ :class => "#{controller_name} #{action_name}" }
不幸的是,我的身体的其余部分位于布局之后,并且只显示else
子句。
我认为我可以在这里使用一个更具可读性的一个衬垫,它可以在行内执行if与更详细的多行if语句,但我可以在这里使用一些帮助预期在HAML。
答案 0 :(得分:3)
我将一个方法放在帮助器中。我喜欢把逻辑排除在我的观点之外。
<强> application_helper.rb 强>
def get_class(name)
"#{controller_name} #{(name =~ /.*index.*/) ? 'index' : name}"
end
查看强>
%body{ :class => get_class action_name }
答案 1 :(得分:2)
嗯,这是一个班轮:
%body{ :class => "#{controller_name} #{(action_name =~ /.*index.*/) ? 'index' : action_name}" }
虽然不那么可读!
答案 2 :(得分:1)
%body{:class => "#{controller_name} #{(action_name =~ /[index]/) ? 'index' : action_name}" }