Rails 4:如何使用AJAX上传文件

eme*_*his 18 ruby ajax file-upload ruby-on-rails ruby-on-rails-4

我想用AJAX上传文件.在过去,我通过使用神奇的jQuery表单插件实现了这一点,它工作得很好.目前我正在构建一个Rails应用程序,并试图做"Rails方式",所以我使用Form Helper和paperclip gem来添加文件附件.

轨道文档警告说,表单助手不为AJAX文件上传的工作:

与其他表单不同,制作异步文件上传表单并不像使用remote:true提供form_for那么简单.使用Ajax表单,序列化是通过在浏览器内运行的JavaScript完成的,因为JavaScript无法从硬盘驱动器读取文件,所以无法上载文件.最常见的解决方法是使用不可见的iframe作为表单提交的目标.

很明显,没有现成的解决方案.所以我想知道最聪明的事情是什么.好像我有几个选择:

  1. 使用表单助手和iframe技巧.
  2. 使用表单helper + load jQuery表单插件来提交文件(不确定这是否可以与Rails的真实性令牌一起使用等)
  3. 使用表单助手+ paperclip + [其他一些gem]来扩展它的功能以允许AJAX表单提交.

这三个似乎都有可能.我至少知道#3,特别是[其他一些宝石]部分.我发现了两个类似的问题(这个这个),它提到了一个名为Uploadify的Pic-Upload分支,但这两个问题都是2年之久,处理Rails 2和3(而且上传还没有多年更新).所以考虑到变化有多大,我认为这确实是一个全新的问题:

在Rails 4中使用AJAX上传文件的最佳方法是什么?

pdo*_*obb 8

看看remotipart宝石:https://github.com/JangoSteve/remotipart - 只需很少的工作就可以让你一路走来!

  • 很多未解决的问题,我特别害怕有关rails 4兼容性的问题 (3认同)