0

基本的に、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 ファイルがあります。

部品名 部品番号 数量 コスト 価格 税 場所 説明 編集可能です

4

2 に答える 2

1

私のコメントによると、列名を記号に変換しようとすると構文エラーが発生します。これは、列名にスペースが含まれていると機能しません。問題のあるコードはhttps://github.com/jnunemaker/mongomapper/blob/f5f695215effea909df65304898f4512600baa08/lib/mongo_mapper/plugins/keys.rbにあるようですが、関連するドキュメントや問題があるかどうかは確認しませんでしたこれ。

于 2013-06-14T03:31:44.310 に答える
0

答えは、ヘッダー名のスペースであることが判明しました。私がクリックできるように、Peter が回答を送信してくれたらいいのにと思います

于 2013-06-14T01:03:58.897 に答える