无在地图中无法强制进入Fixnum

时间:2013-07-22 20:41:26

标签: ruby-on-rails

我有一条线可以完成所有劳动。但是如果值为nil则会抛出:

nil can't be coerced into Fixnum

有没有办法在它到达“Fixnum”之前确定值是否为零?我在代码中尝试了几个不同的地方,但它一直在抛出错误。

<div><span>Total Labor: </span><%= @labors.map{|item| item.total_labor}.reduce(0, :+) %></div>
温柔,我还是个菜鸟。

1 个答案:

答案 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, :+)