2015-08-18 4 views
0

Я работаю над загрузкой .tab-файла в базу данных, и все хорошо согласуется после завершения загрузки. Я хочу рассчитать цену товара из этой загрузки, а не из целая таблица. Я приведу свои примеры ниже. Я выложу один простой, чтобы показать, что я пытаюсь сделать в меньшем масштабе, а затем опубликую свое действие загрузки, которое просто пытается получить конкретную сумму в конце действия.Поиск суммы определенного столбца внутри hash

Легкий пример:

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
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 
+0

Спасибо Я получаю эту ошибку от линии ::::::::: @upload_price + = parsed_hash [ "цена товара"], Строка не может быть принужден к Fixnum – ZachyBear

+0

добавления. to_i до конца работал отлично !! спасибо Чумакову !!! – ZachyBear

+0

@upload_price + = parsed_hash ["цена товара"]. To_i – ZachyBear

Смежные вопросы