我如何在haml中执行内联if语句

时间:2012-04-15 15:52:32

标签: ruby-on-rails ruby ruby-on-rails-3 haml

我有这个haml

  %table.form_upper{:style => "display:none;", :id => 'profile-info'}
    %tr{:id => 'some-row'}

如果条件得到满足,我如何在这张桌子上不显示任何条件,例如我知道我可以这样做,但我觉得必须采用内联方式来做到这一点

-if condtion
  %table.form_upper{:id => 'profile-info'}
-else
  %table.form_upper{:style => "display:none;", :id => 'profile-info'}
    %tr{:id => 'some-row'}

3 个答案:

答案 0 :(得分:13)

你可以这样做:

%table.form_upper{:style => "display:#{condition ? 'none' : ''};", :id => 'profile-info'}

答案 1 :(得分:3)

如果您提供的值为nilfalse的属性,则Haml不会设置该值:

Haml的:

- # substitute an appropriate semantic class name here (not "hidden")
%table.form_upper#profile-info{ class:condition && 'empty' }

CSS:

table.empty { display:none }

答案 2 :(得分:1)

这种方式更好,因为您将样式与逻辑分开,因此您可以更好地控制:

在HAML中:

%table.form_upper{:class => "#{condition ? '' : 'nonvisible_fupper'};", :id => 'profile-info'}
   %tr{:id => 'some-row'}

并在您的CSS文件中:

.nonvisible_fupper { display:none; }