三元运营商不在Haml工作

时间:2013-06-19 00:40:25

标签: haml

这个问题已经被问到,但答案没有奏效。我遇到的问题是这个代码:

 .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为true,我想要添加一个额外的类来说明收藏。由于某种原因,它增加了一个类'true'或'false'。我也试过这个:

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

同样的结果 我不能做一个if / else的事情,因为haml中没有结束,我将不得不重写一百行缩进代码。请帮忙!网上其他解决方案都没有起作用

2 个答案:

答案 0 :(得分:0)

你的第二枪应该可以正常工作。第一个变量返回true / false,因为哈希火箭在优先级方面胜过三元运算符 - 但是之后不应该在语法错误上中断?

你可以在haml中执行if-else。

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

使用缩进代替end

答案 1 :(得分:0)

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}" }