在 Rails 6 中,我有一个带有文件字段的表单,我使用 activestorage 来存储文件。如果提交表单后验证失败,则会重新显示表单并显示验证错误。重新显示表单时如何保留添加到文件字段的文件,以便用户不必再次将文件添加到表单?
Rails 5 已经有一个类似的问题:Active Storage:表单重新显示时保留/缓存上传文件的最佳实践,但是那里的解决方案仅适用于 Rails 5。
由于 Rails 6 不存储分配的文件,我发现的解决方法是在文件字段上启用直接上传。这将在提交表单之前通过 JavaScript 上传文件。
= f.file_field :doc, direct_upload: true
为此,您还需要将 activestorage.js 添加到您的包中,如主动存储指南.
更改后,可以使用问题中描述的方法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?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)