Выходная сумма рельсов десятичной матрицы / матрицы с плавающей точкой - PullRequest
0 голосов
/ 10 ноября 2019

У меня есть следующее, которое, как я думал, получило бы мне сумму массива, но не:

<% @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 %>

Вывод примерно такой:

25.21 25.21 12.66 5.33 12.66 9.01

Мне нужно добавить эти цифры. Как я могу сделать это с десятичными числами / числами с плавающей запятой?

Когда я использую

<%= @orders.each do |order| %>

Я получаю undefined method + for nilclass для строки, которая включена, и это не ноль, но, очевидно, яне хватает некоторого фактора о том, как работает сумма.

Ответы [ 2 ]

1 голос
/ 10 ноября 2019
<%= @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 %>

Как мне заставить его работать

0 голосов
/ 10 ноября 2019

метод reduce в массивах, предназначенных для получения уменьшенной стоимости коллекции:

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

подробнее о уменьшении

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...