Итак, я работаю над приложением, в котором пользователи могут загружать фотографии и управлять ими с помощью набора отраслевых метаданных, прикрепленных к ним.
Модель Photo содержит все эти метаданные, и яиспользуя Paperclip, чтобы прикрепить фактический файл изображения к модели и сохранить изображения в Amazon S3.
В настоящее время взаимодействие с пользователем работает следующим образом:
- Пользователь нажимает «Добавить фото» ипереносится на страницу «Новое фото», где ему представляется форма.
- Первым делом в форме выбирается файл.Пользователь выбирает файл.
- Ниже приведены несколько различных полей метаданных, которые пользователь должен заполнить, поэтому пользователь заполняет их.
- Пользователь нажимает кнопку Отправить, файл загружается иновый объект Photo создан, пользователь перенаправлен на другую страницу.
Итак, очевидное улучшение, которое я хотел бы сделать, - это загрузка фотографии в начале этого процесса, поэтомучто между отправкой и отправкой на следующую страницу нет такой заметной задержки.Было бы также неплохо иметь возможность показать пользователю предварительный просмотр их фотографии после завершения загрузки, чтобы они могли видеть фотографию, в которую они помещают метаданные, при заполнении формы.
Я полагаю, что я мог бы добиться этого, если бы я разделил файл изображения на его собственную модель, но тогда я буду ссылаться на изображения следующим образом:
@photo.attachment.file.url
вместо более простого @photo.file.url
, который я используюсейчас.Я бы предпочел не «вкладывать» это глубже, чем нужно.
Кроме того, разделение его на две модели поднимает проблему управления сиротами, с которой мне в настоящее время не приходится иметь дело.
Итак, мои вопросы:
- Есть ли хороший способ - предпочтительно , а не с использованием Flash - создать такое поведение асинхронной загрузки без разделения на две модели, ИЛИ -
- Если я должен разделить метаданные и файл на две модели, есть ли способ заставить Paperclip рассматривать вложение как его собственную модель, чтобы я мог получить к нему доступ, используя вместо этого
<modelname>.<paperclip_method>
из <model_name>.<attachment_attribute>.<paperclip_method>
?
Я знаю, что это большой вопрос, поэтому большое спасибо заранее за вашу помощь!