三元运算符不在Haml中工作

三元运算符不在Haml中工作,haml,Haml,有人问过这个问题,但答案不起作用。我遇到的问题是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* 缩进是正确的-它显示在这里奇怪

有人问过这个问题,但答案不起作用。我遇到的问题是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是真的,我想添加一个额外的类来表示favorited。出于某种原因,它添加了一个类“true”或“false”。我也试过:

 .UI_feed_item.deletable.clearfix{ :class => (@feed.fav_post ? 'favorited' : ''), feed_id: "#{@feed.id}", id: "feed_item_#{@feed.id}" }
同样的结果
我不能做if/else的事情,因为haml没有结尾,我必须重写一百行缩进的代码。请帮忙!网络上的其他解决方案都不起作用

您的第二个解决方案应该可以正常工作。第一个变量返回true/false,因为哈希火箭在优先级方面胜过了三元运算符——但在这之后它不应该因为语法错误而中断吗

如果在哈姆尔还有别的事,你也可以做

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

使用缩进代替
结束

HAMLC不支持?/:三元运算符,但您仍然可以使用inline 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}" }

您是否尝试过在不同的行上使用相同的三元语句创建/设置变量?什么样的?