Rails3.0.1をruby1.9.2p290で実行し、CSVを使用してCSVファイルを解析しようとしています(私が理解していることから、CSVは現在より高速なCSVコードを使用しています)。
私はこれをfasterCSVに設定することについての素晴らしい記事に従っていて、それを機能させるために小さな変更を加えるだけで済みました(fasterCSVではなくCSVに変更する必要がありますなど)
正しい列数がカウントされたテーブルにcsvファイルをロードすることはできますが、行数に関係なくすべて1行です。たとえば、csvファイルに3つの列を持つ3つの行がある場合、import_tableは行番号をインクリメントせずに列番号0,1,2を3回表示します。したがって、csvファイルの各行の終わりを認識しますが、行カウンターをインクリメントしません。私が欠けているのは何ですか?
私のcsvcontrollerは次のようになります:
require 'csv'
class Admin::CsvController < ApplicationController
def import
end
def upload
table = ImportTable.new :original_path => params[:upload][:csv].original_filename,
:import_type => params[:type]
uploaded_file = params[:upload][:csv].read
CSV.parse(uploaded_file) do |cells|
row_index = 0
column_index = 0
cells.each do |cell|
table.import_cells.build :column_index => column_index, :row_index => row_index, :contents => cell
column_index += 1
end
row_index += 1
end
table.save
redirect_to import_table_path(table)
end
end
.readの代わりに.readlineを使用してみましたが、それによって別のワックスのボールが開きました。