【问题标题】:Conditional tags with HAML带有 HAML 的条件标签
【发布时间】:2011-03-05 20:25:10
【问题描述】:

我有这个哈姆:

.kudobox
  %div.kudos= number_to_human_size_not_bytes kudos
  %div= (kudos == 1 || kudos == -1) ? "kudo" : "kudos"

现在我希望.kudobox 有一个positivenegativezero 类,具体取决于赞数:

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

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

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

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


我知道我可以

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

但是没有更短的方法吗?

【问题讨论】:

    标签: ruby-on-rails view haml


    【解决方案1】:

    我没有仔细查看你的代码(读起来有点混乱)告诉你是否有一个 更短 的方式,但我可以说你最好写一个辅助方法,而不是在视图中包含所有这些逻辑。一个简单的旧 ifcase 语句的辅助方法可以更干净地完成工作,然后长度就不会真正成为一个因素。这样一来,您就可以将视图中的长条件语句替换为易于理解的内容,例如

    %div{ :class => kudobox(kudos) }
    

    【讨论】:

    • 是的,这样做。这是一个帮助者的完美案例。
    【解决方案2】:

    如果您只想要没有助手的简短代码,您可以在这里:

    .kudobox(class="#{kudos<0?'negative':kudos==0?'zero':'positive'}")
    

    【讨论】:

      猜你喜欢
      • 2017-09-01
      • 2012-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-03
      相关资源
      最近更新 更多