我正在努力将.tab文件上传到数据库,并且在上传完成后一切都很顺利,我想单独从该上传计算物品价格,而不是从整个表中计算。我将在下面发布我的示例。我将发布一个简单的一个来展示我想要在较小规模上做什么,然后我将发布我的上传动作,这只是试图在动作结束时获得一个特定的金额。
简单的例子:
def find_whole_rev
@total_price = NewTable.sum[:item_price]
end
返回表中所有值的总和没问题。但要将其缩小到只显示我上传的文件的商品价格:
def import
require 'csv'
db = []
CSV.parse(params[:file].read, {headers: true, col_sep: "\t"}) do |f|
db.push(f.to_hash)
NewTable.create(purchaser_name: f.to_hash["purchaser name"],
item_description: f.to_hash["item description"],
item_price: f.to_hash["item price"],
purchase_count: f.to_hash["purchase count"],
merchant_address: f.to_hash["merchant address"],
merchant_name: f.to_hash["merchant name"],
)
@upload_price = f.to_hash.sum[:item_price]
end
end
一切都很好,除了我无法获取upload_price变量以填充上传文件的项目价格总和。我收到此错误消息:
no implicit conversion of Symbol into Integer
感谢您提出任何建议,如果需要,我会编辑/发布更多信息。再次感谢和欢呼!
答案 0 :(得分:1)
def import
require 'csv'
db = []
@upload_price = 0
CSV.parse(params[:file].read, {headers: true, col_sep: "\t"}) do |f|
parsed_hash = f.to_hash
db.push(parsed_hash)
NewTable.create(purchaser_name: parsed_hash["purchaser name"],
item_description: parsed_hash["item description"],
item_price: parsed_hash["item price"],
purchase_count: parsed_hash["purchase count"],
merchant_address: parsed_hash["merchant address"],
merchant_name: parsed_hash["merchant name"],
)
@upload_price += parsed_hash["item price"]
end
end