2014-09-12 1 views
0

Я загружаю изображение в мою модель с использованием formtastic Gem.Ruby on Rails, Formtastic Gem Загрузка изображения

модель Пользователь имеет много изображений

Я создал свою форму, используя formtastic камень:

= semantic_form_for @user, :remote => true, :html => { :class => 'formtastic' } do |f| 
    = f.semantic_fields_for :images, @image do |image| 
    = image.input :file 
      :label => false, 
      :as => :file 

Требуется, чтобы загрузить изображение. Форма имеет еще два поля Название и описание! После выбора файла для загрузки он отображает выбранное имя файла.

Если я заполню все обязательные поля и нажмите «Отправить», это будет прекрасно, но если я нажму «submit» перед заполнением всего обязательного поля, тогда форма попросит меня заполнить необходимые поля, а также попросит меня снова выбрать файл.

Ожидаемое поведение заключается в том, что форма должна запрашивать у меня заполнение отсутствующего поля, и он должен помнить ранее выбранный файл. Кто-нибудь знает, почему он это делает?

Любая помощь будет принята с благодарностью

ответ

0

Когда форма отправлена, файл прилагается к запросу. Когда страница ошибки возвращается, значения полей формы предоставляются сервером из предоставленной информации для перезаписи страницы. Тем не менее, сервер ничего не знает о том, где файл появился в вашей системе, поэтому не может повторно извлечь файл из вашей системы, чтобы предварительно заполнить форму. Все, что предварительно заполнило бы поле файла, должно было иметь возможность войти в файловую систему на вашем компьютере. Это разрешено только в том случае, если вы сами просматриваете файл. Несколько решений здесь предлагается:

How to persist file upload fields after a rails validation error.

Первые пару ответов рекомендуется использовать камень прикрепление-управления, как Скрепка; если вы хотите избежать использования другого драгоценного камня, мне нравится третий, который рекомендует проверять данные на стороне клиента через javascript - в основном, не позволяет пользователю отправлять форму на сервер с плохой информацией в первую очередь. Конечно, вы все еще хотите проверить на стороне сервера.

 Смежные вопросы

  • Нет связанных вопросов^_^