CSV-Mapper Нет такого файла или каталога - PullRequest
0 голосов
/ 01 октября 2010

Я использую гем csv-mapper для импорта файла csv.Когда я использую пример кода в README (http://github.com/pillowfactory/csv-mapper) в скрипте / консоли, он прекрасно работает. Однако, когда я создаю веб-форму и использую ее для загрузки файла CSV, я получаю сообщение об ошибке «Нет такого файла илиdirectory - test.csv

Это параметры: Параметры:

{"dump" => {"file" => #}, "commit" => "Submit", "authenticity_token"=>" Hb + XDPUGyZQqB5H2vZnhlfXpEE9bAE16kAjTT34uQ3U = "}

Вот что у меня есть для моего кода в контроллере:

def csv_import
  results = CsvMapper.import(params[:dump][:file].original_filename) do
    map_to Sale # Map to the Sale ActiveRecord class instead of the default Struct.
    after_row lambda{|row, sale| sale.save }  # Call this lambda and save each record after it's parsed.

    start_at_row 1
    [start_date, country]
  end
  flash[:notice] = "Successfully uploaded file"
end

Ответы [ 2 ]

4 голосов
/ 05 января 2011

Это немного поздно, но вы также должны заметить, что CsvMapper # import принимает любой ввод-вывод при его передаче: type =>: io опция.

results = CsvMapper.import(params[:dump][:file], :type => :io) do ... end

Это позволит вам пропустить этап сохранения файла перед импортом.

2 голосов
/ 01 октября 2010

Ошибка ожидается, потому что params[:dump][:file].original_filename возвращает только имя файла загруженного CSV. Загруженный файл CSV должен быть сначала сохранен в файловой системе. Передайте путь к сохраненному файлу CSV методу CsvMapper#import, тогда он должен работать.

См. здесь о том, как сохранить загруженные файлы.

...