我做了一个应用程序来总结每列的最后值,但我得到总和
这是我的表格
|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 %>
有人可以帮我解决这个问题吗?
我真的很感激帮助
答案 0 :(得分:3)
这一行
@dolar = Insurance.sum(:net_insurance)
计算所有保险条目的总和,即4000 + 6000 + 3000 + 7000。
您必须为每个政策取得最后一次保险:
@dolar = @policies.to_a.sum { |policy| policy.insurances.last.net_insurance }