возникли проблемы с CSV.parse, не обновляя строки - PullRequest
0 голосов
/ 06 октября 2011

Я запускаю rails 3.0.1 с ruby ​​1.9.2p290 и пытаюсь проанализировать файл CSV с помощью CSV (поскольку, насколько я понимаю, CSV сейчас использует более быстрый код CSV).

Я следил за хорошей записью при настройке этого для более быстрого CSV, и мне пришлось лишь внести незначительные изменения, чтобы заставить его работать (изменение требует CSV вместо более быстрого CSV и т. Д.)

Я могуПолучить 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 голосов
/ 07 октября 2011

Не важно, я только что обнаружил, где мой идиотизм в этом row_index = 0 должен быть вне цикла CSV.parse.

...