0

我做了一个应用程序来总结每列的最后一个值,但我得到了总和

这是我的桌子

|policies|
 |id|  |num_policy|
   1      1234
   2      4567 

|insurances|
 |id|  |id_policy| |net_insurance| 
  1          1      4000
  2          1      6000
  3          2      3000 
  4          2      7000 

我正在尝试在excel中做

|id|   |num_policy|   |net_insurance|
 1        1234           4000
 2        4567           7000

          sum =        11000   

这是我的控制器

class PolicyController < ApplicationController
    def generate_print

      @policies= Policy.find(:all)
      @dolar = Insurance.sum(:net_insurance)

      respond_to do |format|
         format.html
         format.xls { send_data render_to_string(:partial=>"report_by_sum"),  :filename => "Report_#{Date.today}.xls" }
      end

    end
end

这是我的模型

class Policy < ActiveRecord::Base
  has_many :insurances
end

class Insurance < ActiveRecord::Base
  belongs_to :policy
  has_many :insurance_financing_details
end

这是我的观点,显示了每份保单的最后一份保险

<% @policies.each do |policy| %>
    <%= policy.num_policy %>
    <% policy.insurances.last(1).each do |insurance| %>          
        <%= insurance.net_insurance %>
    <% end %>
<% end %>

<%= link_to "Export Excel",{:controller=>"policy",:action=>"generate_print" ,:format=>"xls"}  %>

这是我的部分观点,我试图总结它应该显示“11000”但我得到“20000”

 #   _report_by_sum.erb
<%= @dolar %>

有人可以帮我解决这个问题吗?

我将非常感谢帮助

4

1 回答 1

3

这条线

@dolar = Insurance.sum(:net_insurance)

计算所有保险分录的总和,即 4000 + 6000 + 3000 + 7000。

您必须获取每份保单的最后一份保险:

@dolar = @policies.to_a.sum { |policy| policy.insurances.last.net_insurance }
于 2013-10-24T20:41:07.613 回答