Как сохранить значение поля файла при неудачной проверке - PullRequest
2 голосов
/ 12 мая 2011

У меня есть классическая форма rails 3 с полем файла, все работает нормально, загрузка работает, и данные сохраняются в базе данных.

Если проверка не удалась, например, отсутствует заголовок, то пользовательотправляется обратно в форму с render :action => new.Нормальный.Но проблема здесь в том, что пользователь должен в другой раз выбрать свой файл.

Есть ли способ избежать этого?

Ответы [ 3 ]

3 голосов
/ 12 мая 2011

Как правило, вы не хотите обрабатывать файлы до тех пор, пока не пройдут проверки, или вы собираетесь многократно хранить файлы, которые, возможно, не имеют связанных записей.Это делают такие гемы, как Paperclip и attachment_fu.

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

<% unless foo.attachment? %>
  # file field
<% end %>

Имеет смысл?

3 голосов
/ 12 мая 2011

Вы не можете.Это проблема безопасности.

Вы можете взломать его в некоторых браузерах, но обычно вы не можете это сделать

1 голос
/ 12 ноября 2018

Я знаю, что вопрос устарел, но теперь у гема carrierwave есть что-то, чтобы сохранить поле файла, когда проверка не пройдена.

https://github.com/carrierwaveuploader/carrierwave#making-uploads-work-across-form-redisplays

По сути, вам придется добавитьскрытое поле avatar_cache, если ваша модель имеет загрузчик, смонтированный в файле аватара.Вам нужно будет добавить его в список разрешений контроллера (чтобы Rails не ограничивал передачу поля на сервер)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...