ruby 1.9.2p290으로 레일즈 3.0.1을 실행하고 CSV를 사용하여 CSV 파일을 구문 분석하려고합니다 (CSV가 더 빠른 CSV 코드를 사용하고 있기 때문에 CSV를 사용하고 있습니다).CSV.parse가 행을 업데이트하지 않는 데 문제가 있습니다
나는
내가 csv 파일을 얻을 수 있습니다 (변경 등 대신 fasterCSV의 CSV에 필요) fasterCSV이 설정에 대한 멋진 작성자를 다음 만이 작동하도록하기 위해 사소한 변경을해야했다 계산 된 열의 정확한 수를 가진 테이블로로드 할 수 있지만 행 수에 상관없이 모든 행 하나입니다. 예를 들어, 내 csv 파일에 세 개의 행이있는 세 개의 행이있는 경우 import_table은 행 번호를 증가시키지 않고 세 번 0,1,2의 열 번호를 표시합니다. 그래서 그것은 내 CSV 파일의 각 행의 끝을 인식하지만 행 카운터를 증가시키지 않습니다. 나는 그것이 무엇을 놓치고 있는가?
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 사용했지만, 그 왁스의 다른 공을 열었다 :
내 csvcontroller은 다음과 같습니다.
신경 쓰지 마, 방금 나의 바보가 어디 있는지 발견했습니다. 'row_index = 0'는 CSV.parse 루프 외부에 있어야합니다. 좋아. 이제는 모두 잘됐다. 내가 이것을 할 수있게되면 나는 이것을 7 시간 더 응답으로 표시 할 것입니다. –