0

Rails アプリのユーザー向けにインポート機能を追加したいのですが、ユーザーがインポートするファイルにはヘッダーがなく、興味深いデータは行 8 から始まります。行には 2 つのフィールドしか必要ありません。例を次に示します。 xlsx ファイルの行の :

751,"01/17/2015","11:17:32","60","TDFSRDSK","2","10","-1","0","3","","26","3","","","1","0"  

日付と 4 番目のフィールド (60) の数値のみが必要で、それらを SQL テーブルに追加します。マッピングとその方法に問題があります。railscast チュートリアルと roo doc に基づいて実行しようとしましたが、うまくいきません。

def self.import(file)
 xlsx = Roo::Excelx.new(file)
 xlsx.each_row do |row|
  date = row[2]
  value = row[4]
  user_id = current_user.id
  product.create(:date => date, :valeur => value, :user_id => user_id)
 end
end

そして、私が得るエラー:

no implicit conversion of ActionDispatch::Http::UploadedFile into String

私はレール/ルビーに本当に慣れていないので、マッピングコードがそのようになっているかどうかさえわかりません。

4

1 に答える 1

1

最初にアップロードされたファイルの内容を String オブジェクトに読み込む必要があるようです:

xlsx = Roo::Excelx.new(file.read)

これがどのように機能するかの詳細については、関連する Rails ガイドを参照してください。

于 2015-05-20T15:32:13.927 に答える