4

我有一种情况,我想得到一列的总和并显示它

例如在activeadmin

ActiveAdmin.register Expense do    
   index do       

    column :amount 
    column :details
    column :created_at

    default_actions
  end         
end

我需要对amount列求和并显示它。另外我不知道在哪里显示Total Sum,也许是侧边栏?如果结果被过滤,那么总和必须根据显示的结果相应地改变。

4

6 回答 6

8

collection您可以通过简单地访问将考虑当前应用的过滤器/范围的基础来避免必须计算运行总数,并使用reduce(:+)来执行总和:

ActiveAdmin.register Expense do    
   index do       
    column :amount 
    column :details
    column :created_at

    default_actions

    div class: "panel" do
      h3 "Total amount: #{collection.pluck(:amount).reduce(:+)}"
    end
  end         
end
于 2016-07-29T13:52:07.410 回答
3
ActiveAdmin.register Expense do    
  amount = 0
  index do       

  column :amount 
  column :details
  column :created_at
  column("sub amount") {|resource| amount = amount + resource.amount}
  default_actions
  div :class => "panel" do
    h3 "Total: #{amount}"
  end
 end         
end
于 2013-03-27T04:56:27.693 回答
2

我有同样的问题,找不到答案,所以在玩了一会儿之后,我想出了这个:

ActiveAdmin.register Expense do
  index do

    column :amount
    column :details
    column :created_at

    default_actions

    div :class => "panel" do
      h3 "Total: #{Expense.search(params[:q]).result.sum(:amount)}"
    end
  end
end
于 2014-09-15T22:44:11.833 回答
0

我更喜欢只在没有列(“子金额”)的面板上查看金额,就像以下代码一样:

   ActiveAdmin.register Expense do    

    index do       
      amount = 0
      column :amount 
      column :details
      column :created_at
      registers.each {|resource| amount += resource.amount}
      default_actions
     div :class => "panel" do
       h3 "Total: #{amount}"
     end
   end         
 end
于 2016-04-25T11:39:03.693 回答
0

当我尝试在“index do”上方使用“amount = 0”时使用上面提到的代码时,当我刷新管理页面时,值会增加。这解决了我的问题。

ActiveAdmin.register Expense do    

  index do       
    amount = 0
    column :amount 
    column :details
    column :created_at
    column("sub amount") {|resource| amount = amount + resource.amount}
    default_actions
    div :class => "panel" do
      h3 "Total: #{amount}"
    end
  end         
end
于 2016-02-01T08:41:46.887 回答
-1
ActiveAdmin.register Expense do    

  index do       
    sum = 0
    column "Amount" do |expense|
      sum += expense.amount 
      expense.amount
    end
    column :details
    column :created_at
    default_actions
    div :class => "panel" do
      h3 "Total: #{sum}"
    end
  end         
end
于 2016-07-04T10:10:03.410 回答