编辑表单中的carrierwave

时间:2013-01-22 19:10:50

标签: carrierwave

我正在使用一个表格部分来创建和编辑包含上传者(“文件”)的模型对象:

= 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

在编辑表单中,不是获取与已上传文件关联的文件名,而是“未选择文件”。有没有办法让小部件识别上传者不是nil并使用上传者的文件名?

1 个答案:

答案 0 :(得分:3)

出于安全原因,您无法在文件输入字段中手动设置值。文件名反映了浏览器选择的文件,但文件已经在那时上传了,为什么@ document.file?如果你看,它会表现出来。 file_cache仅用于存储和重新发送已发送的属性,不要与覆盖文件字段的输入值混淆。例如,如果您将隐藏字段更改为输入字段,您将看到相同的“无文件”消息。

我意识到这不是你想要的,但也许更好的方式来处理这个是将输入重新标记为“替换文件”,然后通过 @document.file if @document.file?高于该领域。