我正在使用部分表单来创建和编辑包含上传者("file")的模型对象:
= simple_form_for(@document) do |f|
= f.error_notification
.form-inputs
= f.input :event_id
= f.input :name
= f.input :file
= f.hidden_field :file_cache
.form-actions
= f.button :submit
在编辑表单中,我没有获取与已上传文件关联的文件名,而是得到“未选择文件”。有没有办法让小部件识别上传者不为零并使用上传者的文件名?
最佳答案
出于安全原因,您无法手动设置文件输入字段中的值。文件名反射(reflect)了浏览器选择的文件,但该文件此时已经上传,因此为什么@document.file?如果你看的话会显示真实的。 file_cache 仅用于存储和重新发送已发送的属性,不要与覆盖文件字段的输入值相混淆。例如,如果您将隐藏字段更改为输入字段,您将看到相同的“无文件”消息。
我意识到这不是您想要的,但也许处理此问题的更好方法是重新标记输入以表示“替换文件”之类的内容,然后通过渲染文件中殿
@document.file if @document.file?
位于字段上方。
关于编辑形式的载波,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14466179/