Ruby on rails - 如何在验证失败时保留文件字段值



>我有一个带有文件字段的经典 rails 3 表单,一切正常,上传工作正常,数据保存到数据库。

当验证失败时,例如,缺少标题,则用户将发送回表单,并带有render :action => new。正常。但这里的问题是,用户必须选择另一个时间其文件。

有什么办法可以避免这种情况吗?

通常,

在运行验证之前,您不希望处理文件,或者要重复存储可能没有关联记录的文件。像回形针和attachment_fu这样的宝石就是这样做的。

如果您希望在文件

第一次提交时存储文件并且有效,则可以存储文件,然后在视图中快速检查它是否已为您为其构建表单的对象设置,例如:

<% unless foo.attachment? %>
  # file field
<% end %>

有意义?

你不能。这是安全问题。

您可以在某些浏览器中破解它,但通常您无法做到

我知道

这个问题已经过时了,但是现在当验证失败时,carrierwave gem 有一些东西可以保留文件字段。

https://github.com/carrierwaveuploader/carrierwave#making-uploads-work-across-form-redisplays

基本上,如果您的模型在头像文件上安装了上传器,则必须添加hidden_field avatar_cache。您必须将其添加到控制器中的许可列表中(以便 Rails 不会限制将字段提交到服务器)

相关内容

  • 没有找到相关文章