В моем приложении Rails пользователи могут загружать файлы Excel. В моей модели есть класс ImportFile, который использует attachment_fu следующим образом:
class ImportFile < ActiveRecord::Base
has_attachment :storage => :file_system, :path_prefix => 'public/imports', :max_size => 10.megabytes
end
Когда пользователь нажимает «Добавить файл», он переходит на страницу с полем ‹%= fields.file_field :uploaded_data %>. attachment_fu выполняет свою работу, и загрузка файла выполняется (давайте опустим проблемы с проверкой). Я хочу сохранить этот файл на будущее, поэтому я копирую загруженный файл в другой временный файл. Временный файл работает нормально - я вижу его на диске.
def self.write_to_tmp(data)
temp_file = Tempfile.new("import", "#{Rails.root}/tmp")
begin
temp_file.write(data)
ensure
temp_file.close(false)
end
temp_file
end
Что я хочу сделать, так это показать пользователю предварительный просмотр, а затем позволить ему выбрать, хочет ли он добавить файл или отказаться от него - есть две кнопки. У меня проблема, когда пользователь выбирает сохранить файл, потому что временный файл, который я только что создал выше, исчез. Удаляется перед запросом.
Есть ли у кого-нибудь подсказки, как этого добиться? Или может указать мне сценарий загрузки файла с предварительным просмотром, подобный тому, который я представил? Я искал несколько дней, но так и не нашел.