CSV.parse无法更新行时遇到问题

时间:2011-10-06 18:40:59

标签: ruby-on-rails-3 csv fastercsv

我正在使用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,但这又开了另一个蜡球。

1 个答案:

答案 0 :(得分:0)

没关系,我刚刚发现我的愚蠢在哪里。 row_index = 0需要在CSV.parse循环之外。