Rails 3 - загрузка изображения как вложенного объекта с помощью uploadify при новом действии / создании - PullRequest
0 голосов
/ 29 апреля 2011

У меня есть проект, в котором у меня есть несколько типов контента (статья, интервью и т. Д.) С вложенными изображениями.Для обработки изображений я применил всплывающее окно «Загрузка изображения» (с использованием комбинации Paperclip и Uploadify), чтобы пользователь мог сразу загрузить изображение в статью.

Процесс работает следующим образом:пользователь нажимает значок «загрузить изображение», после чего появляется окно, в которое можно добавить поля загрузки файла со скрепкой, чтобы загрузить столько изображений, сколько они хотят.Uploadify мгновенно загружает фотографии и присваивает им идентификационный номер статьи, к которому они прикреплены.Затем HTML-код фотографии отправляется в редактор WYSIWYG.Если они хотят удалить фотографии, они могут.Если это звучит как WordPress, это то, на чем он основан.

В любом случае, у меня это отлично работает.Фотографии остаются связанными и прикрепленными к соответствующим статьям, а не кидаются в одну огромную папку (как это делают многие загрузчики изображений WYSIWYG), где каждый может добавлять / удалять что угодно.

Но в этом есть один маленький недостаток.... как я уже сказал, изображению присваивается идентификационный номер контента при выполнении загрузки.Хорошо, вы можете видеть, как это является проблемой при создании новой статьи, поскольку новая статья не имеет номера перед сохранением.Таким образом, загрузка изображения не удалась.Таким образом, весь этот процесс работает только с действием «edit / update».

Тем временем я сказал команде, чтобы сначала СОХРАНИТЬ статью, а затем, когда они вернутся к ее редактированию, они могут затемзагрузить свои изображения в тело.Но, естественно, они забывают, что это легко сделать, и, поскольку это очень недружелюбно для пользователя, я должен решить эту проблему.

Я вижу два способа сделать это.

  1. Назначьте идентификатор (скрытое поле или иное) для статьи в «новой» форме.Это успокоит загрузчика, так как он заполняет значение «nil», в котором он ошибается, а затем, когда статья сохраняется в первый раз, ему присваивается тот же самый номер.Но я вижу потенциальную проблему ... что, если другой пользователь создает статью в то же время, и база данных назначает ей идентичный идентификационный номер?

  2. Я заметил, что в момент, когда вы создаетеновый документ WordPress, новый документ автоматически сохраняется как черновик.Таким образом, моя точка зрения такова ... когда пользователь отправляется на создание нового документа, действие «new» фактически запускает операцию «save», обходя любые ошибки проверки (поскольку поля не заполнены), а затем немедленно перенаправляет надействие «редактировать».Таким образом, идентификатор сохраняется, и все будет работать как обычно, и весь процесс может показаться пользователю незаметным.

Как бы вы справились с этой ситуацией?Как я предложил выше, или есть еще лучший способ?

1 Ответ

0 голосов
/ 08 мая 2011

Я решил пойти вторым путем и выполнить сохранение нового действия, минуя проверки, затем перенаправив их в форму редактирования, добавив в качестве «автосохраненного» флеш-сообщение для хорошей меры.Это работает хорошо.

...