查找哈希

时间:2015-08-18 08:17:40

标签: mysql ruby-on-rails file-upload methods sum

我正在努力将.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

感谢您提出任何建议,如果需要,我会编辑/发布更多信息。再次感谢和欢呼!

1 个答案:

答案 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