Проблемы с импортом товаров - PullRequest
1 голос
/ 29 августа 2010

Хорошо, поэтому я пытаюсь импортировать CSV, который мне нужно вставить в БД через рельсы или в любом случае, что будет быстрее, поэтому я решил создать приложение фиктивных рельсов для импорта. Ниже приведен код, который я получил из блога, который я читал.

def upload
  table = ImportTable.new :original_path => params[:upload][:csv].original_path
  row_index = 0    
  FasterCSV.parse(params[:upload][:csv]) do |cells|

  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

Все работает хорошо, но формат CSV не облегчает этот процесс. Вот формат и что мне нужно, чтобы это произошло.

NELCO 2GB RAM, 250GB HDD, DVD-RW, WIN7 PRO / XP LOADED  $575.00     1   $575.00     2   $1,150.00   3   $1,725.00   4   $2,300.00   5   $2,875.00 
TOUCHSCREEN, 15" LCD, SPKRS     $489.00     1   $489.00     2   $978.00     3   $1,467.00   4   $1,956.00   5   $2,445.00 
THERMAL RECEIPT PRINTER FRONT LOADING   $324.00     1   $324.00     2   $648.00     3   $972.00     4   $1,296.00   5   $1,620.00 
IMPACT PRINTER, SERIAL  $285.00     1   $285.00     1   $285.00     1   $285.00     1   $285.00     1   $285.00 
CASH DRAWER, 16x16  $127.00     1   $127.00     1   $127.00     1   $127.00     2   $254.00     2   $254.00 
RESTAURANTS PRO LICENSE $699.00     1   $699.00     2   $1,398.00   2   $1,398.00   2   $1,398.00   2   $1,398.00 
RESTAURANTS PRO LICENSE FOR ADDITIONAL STATIONS BEYOND 2    $535.00         $0.00       $0.00   1   $535.00     2   $1,070.00   3   $1,605.00 
CREDIT CARD PROCESSING SOFTWARE + CARD READER   $79.00  1   $79.00  2   $158.00     3   $237.00     4   $316.00     5   $395.00 
FIREWALL & STATEFUL PACKET INSPECTION   $89.00      $0.00   1   $89.00  1   $89.00  1   $89.00  1   $89.00 
STANDARD SUPPORT PLAN FIRST STATION $275.00     1   $275.00     1   $275.00     1   $275.00     1   $275.00     1   $275.00 
SUPPORT PLAN ADDT'L STATIONS    $100.00         $0.00   1   $100.00     2   $200.00     3   $300.00     4   $400.00 
PREPAID TRAINING & SUPPORT BUNDLE (1 HR.)   $89.00  1   $89.00  1   $89.00  1   $89.00  1   $89.00  1   $89.00 

Извините, если трудно читать, я сделал все возможное в форматировании. Первый элемент в каждой строке - это название продукта, поэтому мне нужно, чтобы оно сохранялось в Product.name, а второй - это цена, которая будет указана в Product.price. следующий - где у меня проблемы

в цикле

      cells.each do |cell|

Мне нужно проверить, нахожусь ли я на третьем элементе в строке, что-то сделать, и пятый элемент, и сделать что-то еще, но я попробовал cell [2] и получил что-то наподобие этого

    Rails.logger.info "====3rd postion==========#{cell[3]}"
  =>    ====3rd postion===========79

1 Ответ

1 голос
/ 29 августа 2010

Собираетесь ли вы на самом деле делать ячейки [3] вместо ячейки [3]? ячейка - это строка, а не массив. В зависимости от используемой версии ruby, ячейка [3] будет либо целым числом, представляющим символ ascii, либо вторым символом в строке.

http://ruby.about.com/od/newinruby191/qt/stringindexop.htm

...