У меня есть страница, где пользователь может импортировать данные на сайт. либо в форме копирования и вставки в текстовую область из 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 одним плавным действием, а не заставлять пользователя нажимать кнопку «процесс».