RubyOnRails CSV Export - PullRequest
       10

RubyOnRails CSV Export

0 голосов
/ 23 июня 2011

Короче говоря. Я новичок в RubyOnRails. Остальная часть моей команды разработчиков покинула компанию, а я остался последним. Я беру код, который они все сделали. Как экспортировать файл CSV, чтобы поместить все данные в несколько строк? Прямо сейчас код помещает несколько записей в одну строку в CSV-файле.

class CancelledDealCSVGenerator
  require 'csv'

  def self.generate_csv(deals)
     CSV.open("#{AppConfig.cancelled_csv_folder}/CANNED.CSV", "a") do |csv|
       deals.each do |deal|
        csv << [deal.customer_number, deal.deal_number, deal.contract_number, deal.cancel_date]
       end
     end
  end

end

Вот как это должно выглядеть

999999 AAA000 55555 от 23.06.2011 08:27

999998 AAA001 55554 от 23.06.2011 08: 15

Но вот как это выглядит

999999 AAA000 55555 23.06.2011 08:27 999998 AAA001 55554 от 23.06.2011 08: 15

Ответы [ 2 ]

0 голосов
/ 24 июня 2011

Судя по комментариям, ваша проблема на самом деле не в коде RoR, а в том, что вы смотрите на файл в системе EBCDIC.

Вам нужно будет конвертировать файлы изкодировка ASCII в EBCDIC (см. преобразование IBM ASCII в EBCDIC )

В основном вы смотрите:

iconv -f IS08859-1 -t IBM-1047 canned.csv > converted.csv
0 голосов
/ 23 июня 2011

Я не уверен, какой плагин / гем CSV вы используете. Если это простой файл, который просто открывает файл и записывает в него, это должно работать.

class Deal
  def to_csv(delimiter=",")
    [deal.customer_number, deal.deal_number, deal.contract_number, deal.cancel_date].join(delimiter)
  end
end

class CancelledDealCSVGenerator
  require 'csv'

  def self.generate_csv(deals)
     CSV.open("#{AppConfig.cancelled_csv_folder}/CANNED.CSV", "a") do |csv|
       csv << deals.map(&:to_csv).join("\n")
     end
  end

end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...