我正在使用ruby 1.9.2p290运行rails 3.0.1并尝试使用CSV解析CSV文件(因为据我所知,CSV现在正在使用fastCSV代码)。
我正在撰写关于为更快的CSV设置此内容的一篇很好的文章,并且只需进行微小的更改即可使其工作(更改需要CSV而不是更快的CS等)。
我可以将csv文件加载到一个表中,并计算出正确的列数,但不管有多少行,它都是一行。例如,如果我的csv文件有三行有三列,我的import_table将显示列号0,1,2三次而不增加行号。所以它确实识别了我的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
我尝试使用.readline代替.read,但这又开了另一个蜡球。
答案 0 :(得分:0)
没关系,我刚刚发现我的愚蠢在哪里。 row_index = 0
需要在CSV.parse循环之外。