Как использовать activestorage в Rails 6, как сохранить файл при повторном отображении формы? - PullRequest
1 голос
/ 18 июня 2019

В Rails 6 у меня есть форма с файловым полем, и я использую activestorage для хранения файла.Если после отправки формы проверки не пройдены, она отображается повторно, показывая ошибки проверки.Как сохранить файл, добавленный в поле файла, при повторном отображении формы, чтобы пользователю не приходилось снова добавлять файл в форму?

Уже существует аналогичный вопрос для rails 5: Активное хранилище: рекомендуется сохранять / кэшировать загруженный файл при повторном отображении формы , однако решение там применимо только к Rails 5.

1 Ответ

0 голосов
/ 27 июня 2019

Поскольку Rails 6 не сохраняет файл при назначении, я нашел обходной путь, который включил прямую загрузку в поле файла.Это загрузит файл через javascript перед отправкой формы.

= f.file_field :doc, direct_upload: true

Чтобы это работало, вам также необходимо добавить activestorage.js в ваш пакет, как описано в Active Storage guide ,

После этого изменения можно использовать метод, описанный в вопросе Активное хранилище: Лучшая практика для сохранения / кэширования загруженного файла при повторном отображении формы .Это означает добавление в форму подписанного идентификатора в скрытом поле следующим образом:

= f.file_field :doc, direct_upload: true
= f.hidden_field :doc, value: f.object.doc.signed_id if f.object.doc.attached?
...