【问题标题】:Ternary operator not working in Haml三元运算符不在Haml中工作
【发布时间】:2013-06-19 00:40:24
【问题描述】:

已提出此问题,但答案未奏效。我遇到的问题是这个 hamlc 代码:

 .UI_feed_item.deletable.clearfix{ :class => @feed.fav_post ? 'favorited' : '', feed_id: "#{@feed.id}", id: "feed_item_#{@feed.id}" }
   *a lot more haml that doesn't have to do with this question*

缩进是正确的 - 在这里显示很奇怪 如果 feed.fav_post 为真,我想要添加一个额外的类来表示收藏。出于某种原因,它添加了一个类“真”或“假”。我也试过这个:

 .UI_feed_item.deletable.clearfix{ :class => (@feed.fav_post ? 'favorited' : ''), feed_id: "#{@feed.id}", id: "feed_item_#{@feed.id}" }

同样的结果 我不能做 if/else 的事情,因为 haml 没有尽头,我必须重写一百行缩进代码。请帮忙!网络上的其他解决方案均无效

【问题讨论】:

  • 您是否尝试过在不同的行上使用相同的三元语句创建/设置变量? this 之类的东西?

标签: haml


【解决方案1】:

您的第二个镜头应该可以正常工作。第一个变体返回真/假,因为哈希火箭在优先级方面胜过三元运算符 - 但在那之后它不应该因为语法错误而中断吗?

你可以在haml中做if-else。

- if true
  some stuff here
- else
  some other stuff here

使用缩进代替end

【讨论】:

    【解决方案2】:

    HAMLC 不支持 ?/: 三元运算符,但您仍然可以使用内联 if/then/else 实现您想要的。试试这个:

    .UI_feed_item.deletable.clearfix{ :class => "#{ if @feed.fav_post then 'favorited' else '' }", feed_id: "#{@feed.id}", id: "feed_item_#{@feed.id}" }
    

    【讨论】:

      猜你喜欢
      • 2013-07-12
      • 2012-01-04
      • 1970-01-01
      • 2015-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-15
      相关资源
      最近更新 更多