2010-10-01 29 views
0

我正在使用csv-mapper gem導入一個csv文件。當我在腳本/控制檯的自述文​​件(http://github.com/pillowfactory/csv-mapper)中使用示例代碼時,它的效果很好。然而,當我創建了一個Web表單,並用它來上傳CSV文件出現錯誤「沒有這樣的文件或目錄 - test.csvCSV-Mapper沒有這樣的文件或目錄

這些參數: 參數:

{」傾銷」 => { 「文件」=>#}, 「提交」=> 「提交」, 「authenticity_token」=> 「血紅蛋白+ XDPUGyZQqB5H2vZnhlfXpEE9bAE16kAjTT34uQ3U =」}

這裏是我有我的控制器代碼:

def csv_import 
    results = CsvMapper.import(params[:dump][:file].original_filename) do 
    map_to Sale # Map to the Sale ActiveRecord class instead of the default Struct. 
    after_row lambda{|row, sale| sale.save } # Call this lambda and save each record after it's parsed. 

    start_at_row 1 
    [start_date, country] 
    end 
    flash[:notice] = "Successfully uploaded file" 
end 

回答

2

預期錯誤,因爲params[:dump][:file].original_filename僅返回上載的CSV文件的名稱。上傳的CSV應該先保存到文件系統中。將路徑傳遞到保存的CSV文件CsvMapper#import方法,然後它應該工作。

請參閱here瞭解如何保存上傳的文件。

4

這有點遲了,但你也應該注意到,當你傳遞:type =>:io選項時,CsvMapper#import會接受任何IO。

results = CsvMapper.import(params[:dump][:file], :type => :io) do ... end

這將允許你跳過文件保存在導入之前的步驟。

相關問題