Ошибка с обработкой Paperclip / FasterCSV для дополнительной загрузки csv

У меня есть страница, на которой пользователь может импортировать данные на сайт. либо путем копирования и вставки в текстовую область из Excel, либо путем загрузки файла .csv.

Контроллер проверяет, был ли загружен csv — если это так, он обрабатывает его, иначе он будет обрабатывать вставленный контент. (исходя из предположения, что пользователь пока выберет только один вариант).

Часть копирования и вставки работает отлично, однако проблема возникает, когда я пытаюсь обработать загруженный CSV-файл:

Я получаю сообщение об ошибке:

не могу преобразовать ActionController::UploadedTempfile в строку

#events_controller
  def invite_save
    @event = Event.find(params[:id])

    if params[:guest_list_csv]
      lines = parse_csv_file(params[:guest_list_csv])
    else
      #csv file uploaded
      lines = params[:guest_list_paste]
    end

    if lines.size > 0
      lines.each do |line|
          new_user(line.split)
      end 
      flash[:notice] = "List processing was successful."
    else
      flash[:error] = "List data processing failed."
    end

  end
private

  def parse_csv_file(path_to_csv)
    lines = []

    require 'fastercsv' 

    FasterCSV.foreach(path_to_csv) do |row|
      lines << row
    end
    lines
  end

  def new_user(line)
     #code to create new user would go here
  end

По сути, я пытаюсь загрузить и обработать csv одним плавным действием, а не заставлять пользователя нажимать кнопку «обработать».


person Chris    schedule 23.10.2009    source источник
comment
Можете ли вы показать файлы вида и модели, а также   -  person    schedule 14.11.2010


Ответы (1)


В строке № 6 выше

if params[:guest_list_csv]
  lines = parse_csv_file(params[:guest_list_csv])
else
  #csv file uploaded
  lines = params[:guest_list_paste]
end

Проблема в том, что params[:guest_list_csv] не является ни строкой, ни путем, поскольку это файловый объект. Что вам нужно, это явно вызвать #path на нем.

# line 6
  lines = parse_csv_file(params[:guest_list_csv].path)

Пожалуйста, попробуйте и посмотрите, решит ли это вашу проблему.

person sikachu    schedule 31.10.2009