Ruby on Rails,Formtastic Gem图片上传

时间:2014-09-12 22:50:54

标签: ruby-on-rails rubygems formtastic

我正在使用formtastic Gem将图像上传到我的图像模型。

用户模型有很多图像

我使用formtastic gem创建了我的表单:

= semantic_form_for @user, :remote => true, :html => { :class => 'formtastic' } do |f|
  = f.semantic_fields_for :images, @image do |image|
    = image.input :file
             :label => false,
             :as => :file

需要上传图片。表单还有两个字段名称和描述! 选择要上传的文件后,它会显示所选的文件名。

如果我填写所有必填字段并点击提交它完全正常但是如果我在填写所有必填字段之前点击提交,那么表格将要求我填写必填字段并且还要求我再次选择该文件。

预期的行为是表单应该只要求我填写缺少的必填字段,它应该记住以前选择的文件。 有谁知道为什么会这样做?

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

提交表单后,该文件将附加到请求中。返回错误页面时,服务器从提交的信息中提供表单字段的值以重写页面。但是,服务器不知道文件来自系统的位置,因此无法从系统重新获取文件以预填充表单。 任何预先填充文件字段的东西都必须能够进入计算机上的文件系统。仅当您自己浏览文件时才允许这样做。 这里提出了几个解决方案:

How to persist file upload fields after a rails validation error.

前几对答案建议使用像Paperclip这样的附件管理宝石;如果你想避免使用另一个我喜欢第三个的gem,它建议通过javascript对数据进行客户端验证 - 基本上阻止用户首先将表单提交给服务器。当然,您仍然希望在服务器端进行验证。