【问题标题】:Writing an if-else inside a HAML in Rails在 Rails 的 HAML 中编写 if-else
【发布时间】:2013-08-25 17:59:00
【问题描述】:

对不起,如果这是一个初学者问题,只是我使用 HAML 的第一天,还没有习惯。

所以我的 HAML 中有这个:

%td= number_to_percentage(thera.group_dispense_rate, precision: 0)

我想更新它说如果thera.group_dispense_ratenil 然后改用thera.provider_dispense_rate

所以我只是需要一些帮助来更新这个 HAML 逻辑。

【问题讨论】:

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


    【解决方案1】:

    只需使用双管道(OR 运算符)*:

    number_to_percentage(thera.group_dispense_rate || thera.provider_dispense_rate, precision: 0)
    

    双管道(OR 运算符)* 的作用:

    1.9.3p448 :090 > nil || "Bonjour Cartman"
    # => "Bonjour Cartman" 
    

    注意:双管道适用于nilfalse,但不适用于空的东西(数组,字符串,哈希)而不是零(整数)。


    更长的版本,用于 HAML:

    %td
      - if thera.group_dispense_rate.present?
        = number_to_percentage(thera.group_dispense_rate, precision: 0)
      - else
        = number_to_percentage(thera.provider_dispence_rate, precision: 0)
    

    *(OR operator) = boolean OR,感谢@meagar

    【讨论】:

    • 您在第一行发布的较短版本也对我有用。谢谢。我需要切换到您现在发布的更长版本吗?
    • 不不,第二个是为了回答您的确切问题“需要一些帮助来更新此 HAML 逻辑”,使用第二个选项,您可以添加更多验证,例如 @例如 987654326@ 和 > 0。第一个仅适用于nilfalse,不适用于空/零
    • 而不是“双管”,你真的应该用它的实际名称来称呼它,“布尔或”。它是“或运算符”。不是“双管”。
    猜你喜欢
    • 2013-12-14
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    相关资源
    最近更新 更多