带有HAML的条件标签

5 haml ruby-on-rails view

我有这个haml:

.kudobox
  %div.kudos= number_to_human_size_not_bytes kudos
  %div= (kudos == 1 || kudos == -1) ? "kudo" : "kudos"
Run Code Online (Sandbox Code Playgroud)

现在,我想.kudobox有一个positive,negativezero类,根据荣誉的数量:

-# < 0 kudos
<div class="kudobox negative">

-# == 0 kudos
<div class="kudobox zero">

-# > 0 kudos
<div class="kudobox positive">
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?谢谢.


我知道我可以

%div{ :class => ( kudos < 0 ? "kudobox negative" : ( kudos == 0 ? "kudobox zero" : ( kudos > 0 ? "kudobox positive" : "kudobox impossible" ) ) ) }
Run Code Online (Sandbox Code Playgroud)

但是有没有更短的方式?

小智 10

我没有仔细查看你的代码(这有点令人困惑),告诉你是否有更短的方法,但我可以说你编写一个辅助方法要好得多于所有这些逻辑风景.使用普通的ifcase语句的辅助方法可以更干净地完成工作,然后长度实际上不是一个因素.这样,您可以在视图中使用容易的东西替换长条件语句,例如

%div{ :class => kudobox(kudos) }
Run Code Online (Sandbox Code Playgroud)