これは非常に小さなエラーのようですが、この問題の解決策が見つかりません. Rails(3.2) アプリケーション (ruby 1.9.3) で CSV gem を使用しようとしていますが、「NoMethodError」というエラーが発生します。私のコントローラーは:
require 'csv'
def import
file = params[:file] <-- error
CSV.parse(file, :headers => false) do |row|
Event.new(:Ename => row[0], :Edate => row[1], :Elocation => row[2], :Edesc => row[3], :Oname => row[4], :Oemail => row[5], :Odetail => row[6])
end
end
ユーザーがcsvファイルをアップロードできるビューからこのファイルを取得しています。NoMethodError (nil:NilClass の未定義メソッド 'nil') が発生しています。私の最善の推測では、この方法を間違って使用していますが、次の質問は Csv データを解析する方法ですか? ビューからファイルを取得し、データをデータベースに解析したいと考えています。同じファイルを開くにはどうすればよいですか?上記の方法は正しくありませんか?簡単に言うと、「FasterCSV」ジェムを使用しようとしましたが、「標準の FasterCsv 1.9.2 ジェムを使用してください」というメッセージが表示されました。heroku への gem のデプロイで問題が発生したため、fastercsv から標準の csv に変更する必要がありました。
ビューファイルを渡すのを忘れました、
<%= form_tag({:action => :import}, :multipart => true) do %>
<%= file_field_tag 'file' %>
<% end %>
基本です。私が得ているエラーは解析メソッドにあります..ドキュメントを見て、文字列を使用することになっていることがわかりました。しかし、「params[:file]」でそれが得られると思いました。申し訳ありませんが、私はRailsに比較的慣れていません..