【问题标题】:How do i do an inline if statement in haml我如何在haml中执行内联if语句
【发布时间】:2012-04-15 15:52:31
【问题描述】:

我有这个哈姆尔

  %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'}

【问题讨论】:

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


    【解决方案1】:

    你可以这样做:

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

    【讨论】:

    • 或者更简洁:%table.form_upper#profile-info(display="#{:none if condition}")
    【解决方案2】:

    如果您提供具有nilfalse 值的属性,Haml 将不会设置它:

    哈姆:

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

    CSS:

    table.empty { display:none }
    

    【讨论】:

    • 最佳方案,选这个
    【解决方案3】:

    这种方式更好,因为您将样式与逻辑分开,因此您拥有更多控制权:

    在 HAML 中:

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

    在您的 CSS 文件中:

    .nonvisible_fupper { display:none; }
    

    【讨论】:

    • 请注意display:block 是表格的错误显示样式。最好只在必要时隐藏它,否则让它默认为正确的显示样式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    相关资源
    最近更新 更多