2011-10-06 24 views
0

我正在運行軌道3.0.1與紅寶石1.9.2p290,並嘗試使用CSV解析CSV文件(因爲據我所知,CSV現在使用更快的CSV代碼)。有問題CSV.parse沒有更新行

我設置此功能爲fasterCSV下面一個很好的書面記錄,並只需要做出小的改動,以得到它的工作(其他城市要求,以CSV,而不是fasterCSV等)

我可以得到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 

我嘗試使用,而不是.read .readline,但開闢了蠟的另一個球。

+0

沒關係,我剛剛發現我的白癡在這裏。 'row_index = 0'需要在CSV.parse循環之外。好吧,一切都很好。我會將此標記爲在我被允許這樣做的7個小時內回答。 –

回答

0

沒關係,我剛剛發現我的白癡在這裏。 row_index = 0需要在CSV.parse循環之外。