在Rails中的HAML代码中如何编写if-else语句

3

如果这是一个初学者的问题我很抱歉,因为这是我第一次使用HAML,还不太习惯。

所以这是我在HAML中的代码:

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

我希望更新这段内容。如果thera.group_dispense_rate为空,那么将使用thera.provider_dispense_rate。我只需要帮助更新这个HAML逻辑。
1个回答

7

只需使用双竖线(OR运算符)*:

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

双竖线(OR运算符)的使用示例:

双竖线(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) = 布尔运算符 OR,感谢 @meagar


较短的版本对我也有效。谢谢。现在我需要切换到您发布的较长版本吗? - user1899082
2
不,第二个选项是为了回答您的精确问题“需要帮助更新此HAML逻辑”,使用第二个选项,您可以添加更多验证,例如.present?> 0。第一个选项仅适用于nilfalse,而不适用于空值/零。 - MrYoshiji
2
你应该用它的真实名称“布尔或”来称呼它,而不是“双管道”。它是“或运算符”,而不是“双管道”。 - user229044

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接