Rob*_*ban 7 ruby-on-rails rails-activestorage ruby-on-rails-6
在 Rails 6 中,我有一个带有文件字段的表单,我使用 activestorage 来存储文件。如果提交表单后验证失败,则会重新显示表单,显示验证错误。重新显示表单时如何保留添加到文件字段的文件,以便用户不必再次将文件添加到表单?
rails 5 已经有一个类似的问题:Active Storage: Best practice to retain/cache Uploaded file when form redisplays,但是那里的解决方案只适用于 Rails 5。
由于 Rails 6 不存储分配的文件,我发现的解决方法是在文件字段上启用直接上传。这将在提交表单之前通过 JavaScript 上传文件。
= f.file_field :doc, direct_upload: true
Run Code Online (Sandbox Code Playgroud)
为此,您还需要将 activestorage.js 添加到您的捆绑包中,如Active Storage 指南中所述。
进行此更改后,可以使用问题Active Storage:表单重新显示时保留/缓存上传文件的最佳实践中描述的方法。这意味着将signed_id 添加到表单的隐藏字段中,如下所示:
= f.file_field :doc, direct_upload: true
= f.hidden_field :doc, value: f.object.doc.signed_id if f.object.doc.attached?
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1842 次 |
| 最近记录: |