HAML中的多个条件类

4
使用Ruby和HAML,有没有更简短的方式来表示这个逻辑:
%tr{class: "#{'success' if admin.approved?} #{'warning' unless admin.approved?}"}

谢谢!


使用一个辅助方法。我不记得你是否可以使用三元运算符,但如果可以的话,也是一种选择。 - Dave Newton
嘿,@DaveNewton,恭喜你达成了10万声望的里程碑!是的,在这种情况下,你实际上可以使用三元运算符。 - MrYoshiji
1个回答

7
您可以使用三元运算符(一行if/else语句)简化逻辑:
%tr{class: admin.approved? ? 'success' : 'warning'}

或者您可以将逻辑移动到帮助程序中。例如,在application_helper.rb中创建一个帮助程序方法:

def admin_row_class(admin)
  admin.approved? ? 'success' : 'warning'
end

然后在你的视图中使用这个帮助器:
%tr{class: admin_row_class(admin)}

对于非布尔运算或超过2个结果的情况,我猜您只是建议使用辅助函数?谢谢! - toobulkeh
是的,如果逻辑变得更加复杂,使用辅助函数是一个不错的选择。 - infused
助手绝对是正确的选择!我发现了一个有用的宝石,它实现了一般版本的助手方法,叫做css-class-string。这就是我最近项目中处理条件CSS类的方式。我在这里写了关于它的文章。希望能帮到你! - Carlos Ramirez III

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