我有一条可以完成所有工作的生产线。但是,如果值为 nil,则会抛出:
nil can't be coerced into Fixnum
有没有办法在它到达“Fixnum”之前确定该值是否为零?我在代码中尝试了几个不同的地方,但它不断抛出错误。
<div><span>Total Labor: </span><%= @labors.map{|item| item.total_labor}.reduce(0, :+) %></div>
温柔点我还是菜鸟..
我有一条可以完成所有工作的生产线。但是,如果值为 nil,则会抛出:
nil can't be coerced into Fixnum
有没有办法在它到达“Fixnum”之前确定该值是否为零?我在代码中尝试了几个不同的地方,但它不断抛出错误。
<div><span>Total Labor: </span><%= @labors.map{|item| item.total_labor}.reduce(0, :+) %></div>
温柔点我还是菜鸟..
您可以使用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, :+)