Ruby on rails 十进制/浮点数组轨道的输出和

Ruby on rails 十进制/浮点数组轨道的输出和,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有以下内容,我以为可以得到数组的和,但没有: <% @orders.each do |order| %> <% if Product.exists?(sku: order.line_items.where().map {|li| li.sku }) %> <%= order.line_items.where(vendor_name: @vendor.vendor_name).map do |li| %> <% if

我有以下内容,我以为可以得到数组的和,但没有:

<% @orders.each do |order| %>
   <% if Product.exists?(sku: order.line_items.where().map {|li| li.sku }) %>
      <%= order.line_items.where(vendor_name: @vendor.vendor_name).map do |li| %>
          <% if Product.exists?(sku: li.sku) %>
              <% product = Product.find_by(sku: li.sku ) %>
              <% ((li.store_price.to_d * li.store_fulfillable_quantity) - (product.production_price * li.store_fulfillable_quantity)) * (0.70) %>
          <% end %>
       <% end.compact.sum %>
   <% end %>
<% end %>
我得到了nilclass的
未定义的方法+
,它不是nil,但显然我缺少了sum如何工作的一些因素。


<%= @orders.map do |order| %>
   <% if Product.exists?(sku: order.line_items.where().map {|li| li.sku }) %>
      <% order.line_items.where(vendor_name: @vendor.vendor_name).map do |li| %>
          <% if Product.exists?(sku: li.sku) %>
              <% product = Product.find_by(sku: li.sku ) %>
              <% ((li.store_price.to_d * li.store_fulfillable_quantity) - (product.production_price * li.store_fulfillable_quantity)) * (0.70) %>
          <% end %>
       <% end.compact.sum %>
   <% end %>
<% end.compact.sum %>

这是我如何让它在阵列中工作的

方法
reduce
,该阵列设计用于降低收集价值:

array.compact.reduce(:+)
# => Sum of array

有关寻求调试帮助的问题(“此代码为什么不工作?”)的详细信息必须包括所需的行为、特定问题或错误以及在问题本身中重现这些问题所需的最短代码。请参阅:。将代码移出视图代码,在
顺序中提供最少的输入数据。是的,我正要评论,看起来您正在对内部
映射进行求和,而不是对外部映射进行求和。很高兴你明白了!
array.compact.reduce(:+)
# => Sum of array