2014-09-12 152 views
0

我使用formtastic Gem将图片上传到我的图像模型。Ruby on Rails,Formtastic Gem图片上传

用户模型有很多图片

我使用formtastic宝石创建自己的状态:

= 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 

要求通过上传图片。该表单还有两个字段名称和说明! 选择要上传的文件后,会显示所选的文件名。

如果我填写所有必填字段并点击提交,它的工作原理完全正常,但如果在填写所有必填字段之前点击提交,表单会要求我填写必填字段,并要求我再次选择文件。

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

任何帮助将不胜感激

回答

0

当表单被提交时,该文件被附加到请求。当错误页面返回时,表单字段的值由服务器从提交的信息中提供以重写页面。但是,服务器不知道文件来自系统的什么位置,因此无法从系统中重新获取文件以预先填充表单。 任何可能预先填充文件字段的内容都必须能够进入计算机上的文件系统。只有在您自己浏览文件时才允许使用此功能。 一对夫妇的解决方案提出了在这里:

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

第一对夫妇的答案建议使用附件管理宝石样回形针;如果你想避免使用另一个gem,我喜欢第三个,它推荐通过javascript对数据进行客户端验证 - 基本上阻止用户首先将信息提交给服务器。当然,你仍然想在服务器端进行验证。