我有一条线可以完成所有劳动。但是如果值为nil则会抛出:
nil can't be coerced into Fixnum
有没有办法在它到达“Fixnum”之前确定值是否为零?我在代码中尝试了几个不同的地方,但它一直在抛出错误。
<div><span>Total Labor: </span><%= @labors.map{|item| item.total_labor}.reduce(0, :+) %></div>
温柔,我还是个菜鸟。
答案 0 :(得分:1)
您可以使用compact
从数组中删除nil值,然后将所有值相加:
http://www.ruby-doc.org/core-2.0/Array.html#method-i-compact
@labors.compact.map{|item| item.total_labor}.reduce(0, :+)
或者,正如@ ajedi32所说:
@labors.map{|item| item.total_labor}.compact.reduce(0, :+)