模型税务的我的数据库列: ID,RECEIPT,TAXID,BASE,AMOUNT
假设我有数据库条目:
1,1,001,30 $,3 $
2,1,001,50 $,5 $
3,2,001,20 $,2 $
我想显示每张收据的金额总和。结果应该是:
1,8 $
2,2 $
我的控制器
class TaxlinesController < ApplicationController
def index
@taxlines = Taxline.group(:RECEIPT).sum(:AMOUNT)
end
end
我的观点:
<% @taxlines.each do |taxline| %>
<td><%= taxline.RECEIPT %></td>
<td><%= taxline.AMOUNT %></td>
但是我得到错误未定义的方法`RECEIPT&#39; for [&#34; 01a8fdd7-8eb6-44d0-a686-8010b9e30206&#34;,145000.0]:Array
145000.0和01a8fdd7-8eb6-44d0-a686-8010b9e30206参考db中的真实值,而不是上面的示例。但它提出了这个想法。
App建立在现有数据库上,列名大写。
我做错了什么?
答案 0 :(得分:0)
您的问题是Taxline.group(:RECEIPT).sum(:AMOUNT)
返回Hash对象而不是您期望的一组Taxline实例。它们的键是分组值(RECEIPT),值是相应的总和。类似的东西:
{ "01a8fdd7-8eb6-44d0-a686-8010b9e30206" => 145000.0, ... }
执行@taxlines.each
时,Hash会被强制转换为数组。
使用您当前的代码,您只需将视图更改为:
<% @taxlines.each do |receipt, amount| %>
<td><%= receipt %></td>
<td><%= amount %></td>