有没有办法让这种情况在 Rails 视图中更加紧凑?
例如我有火腿
= object.count unless object.count ==0
我有点不喜欢我在那里重复这个功能,我宁愿有类似的东西
= object.count unless ==0
例如,如果我有更复杂的陈述
= object.relations.where(attribute: "something").count unless zero?
我可以把它分成两行说
- cnt = object.relations.where(attribute: "something").count
= cnt unless cnt==0
但是对于每种情况,我都会有多行,并且存储一个要使用一次的变量很糟糕。
编辑:只是为了详细说明我想检查数字是否为 0,如果是,则不显示任何内容。这样看起来更好看。
更新:
其中一个答案提出了沿着这些思路的解决方案
class Object
def unless
self unless yield(self)
end
end
所以我可以用一个块来调用我拥有的任何对象,例如。.unless{|c| c<1}
这让我可以附加条件,并清楚地知道发生了什么:),奖励是因为它是块驱动的,我可以在任何对象上使用它:P。
谢谢大家 :)
更新更多
在|c|
块吸。所以我查了api也改了
class Object
def unless(&block)
self unless instance_eval(&block)
end
end
所以现在我可以使用 .count.unless{zero?} 来完成这个:P。或者,如果我有一个复杂的情况,我可以将其添加到|c|
etc中。