基本的に、CSV インポートは機能しません。
モデルコード:
def self.import(file,admin_id)
spreadsheet = open_spreadsheet(file)
header = spreadsheet.row(1)
(2..spreadsheet.last_row).each do |i|
row = Hash[[header, spreadsheet.row(i)].transpose]
new_row = row.to_hash.merge(:merchant_id => admin_id)
Inventory.create! new_row
end
end
def self.open_spreadsheet(file)
require 'iconv'
case File.extname(file.original_filename)
when ".csv" then Roo::Csv.new(file.path, nil, :ignore)
when ".xls" then Roo::Excel.new(file.path, nil, :ignore)
when ".xlsx" then Roo::Excelx.new(file.path, nil, :ignore)
else raise "Unknown file type: #{file.original_filename}"
end
end
コントローラーのアクション:
def import
Inventory.import(params[:file],params[:admin_id])
redirect_to :inventories, :notice => "Imported Successfully."
end
インポートボタン、ファイルの選択、すべて正常に機能します。送信時:
SyntaxError in InventoriesController#import (eval):2: syntax error, unexpected tIDENTIFIER, expecting ')' read_key(:Parts name) ^ (eval):6: syntax error, unexpected tIDENTIFIER, expecting ')' read_key_before_type_cast(:Parts name) ^ (eval):10: syntax error, unexpected tIDENTIFIER, expecting ')' write_key(:Parts name, value) ^ (eval):10: syntax error, unexpected ')', expecting '=' (eval):14: syntax error, unexpected tIDENTIFIER, expecting ')' read_key(:Parts name).present? ^ (eval):15: syntax error, unexpected $end, expecting keyword_end
誰かがこれに光を当てることができますか?実際のメソッドをデバッグして、それが何をしようとしているのか、どのように失敗するのかを正確に確認する良い方法を見つけることさえできません。
ヘッダー行全体で次のようなテンプレート CSV ファイルがあります。
部品名 部品番号 数量 コスト 価格 税 場所 説明 編集可能です