Я работаю над своего рода заказом, в котором у меня есть несколько сумм в разных валютах только в одном атрибуте.Поэтому я пытаюсь сделать sum
в разных валютах внутри этого атрибута, используя другие атрибуты в таблице, которая работает нормально, но выводит результат в виде числа всех строк, а не просто показывает сумму вычисленных случайных значений.
orders_controller.rb
module Admin
module Statistic
class OrdersController < BaseController
def show
@orders_grid = ::Statistic::OrdersGrid.new(params[:statistic_orders_grid]) do |value|
value.page(params[:page]).per(20)
end
@assets = @orders_grid.assets
#@fee_groups = {:fee => @assets.sum(:fee)}
@fee_groups = {
:fee => @assets.sum{|t|
olaoa = t.type
market_string = t.currency
base_currency = market_string.slice(0..2)
quote_currency = market_string.slice(3..5)
if olaoa == 'OrderBid' and base_currency == 'btc'
"#{ t.fee.to_s + ' ' + base_currency.upcase }"
elsif olaoa == 'OrderAsk' and quote_currency == 'ngn'
"#{ t.fee.to_s + ' ' + quote_currency.upcase }"
end
}
}
@orders_filter = true
@orders_group = true
end
end
end
end
summary.htm.slim
.panel.panel-default
.panel-heading
h4.panel-title.row
a data-parent="#filter-accordion" data-toggle="collapse" href="#summary"
span.col-xs-8.text-muted = t('admin.statistic.summary')
span.col-xs-4.text-right.text-muted = t('admin.statistic.click-to-expand')
#summary.panel-collapse.collapse
.panel-body
.datagrid-groups
- if !@orders_group
- if groups
- groups.each do |key, val|
.datagrid.group.row
span.col-xs-2.title = t("admin.statistic.#{controller_name}.#{controller.action_name}.#{key}")
span.col-xs-10.value = val
- if @orders_group
/ Summary Count Loop
- if groups
- groups.each do |key, val|
.datagrid.group.row
span.col-xs-2.title = t("admin.statistic.#{controller_name}.#{controller.action_name}.#{key}")
span.col-xs-10.value = pluralize(val, 'Order')
/ Summary Fees Loop. This is the Fee loop causing problem if am rigth and I dont know how to fix this.
- if @fee_groups
- @fee_groups.each do |key, val|
.datagrid.group.row
span.col-xs-2.title = t("admin.statistic.#{controller_name}.#{controller.action_name}.#{key}")
span.col-xs-10.value = val
Результат кода
Итак, как вы можете видеть, он рендерит 0.0BTC 5 раз, потому что фильтр имеет только 5 ордеров.Как мне справиться с этим.Я хочу, чтобы только сумма всех BTC отображалась в результате, а не 5 раз.
Любая помощь будет оценена.