【发布时间】:2013-09-06 20:59:22
【问题描述】:
我想用 AJAX 上传文件。在过去,我通过使用神奇的jQuery form plugin 来实现这一点,并且效果很好。目前我正在构建一个 Rails 应用程序并尝试以“Rails 方式”做事,所以我正在使用 Form Helper 和回形针 gem 添加文件附件。
rails docs 警告表单助手不适用于 AJAX 文件上传:
不同于其他表单制作一个异步文件上传表单不像 就像为 form_for 提供 remote: true 一样简单。使用 Ajax 表单 序列化由在浏览器中运行的 JavaScript 完成,并且 因为 JavaScript 不能从你的硬盘读取文件 无法上传。最常见的解决方法是使用不可见的 用作表单提交目标的 iframe。
似乎没有现成的解决方案。所以我想知道最聪明的做法是什么。好像我有几个选择:
- 使用表单助手和 iframe 技巧。
- 使用表单助手 + 加载 jQuery 表单插件来提交文件(不确定这是否会与 Rails 的真实性令牌等配合使用)
- 使用表单助手 + 回形针 + [其他一些 gem] 来扩展它的功能以允许提交 AJAX 表单。
这三个似乎都是可能的。我对#3知之甚少,特别是[其他一些宝石]部分。我发现了两个类似的问题(this 和this),其中提到了 Pic-Upload 的一个分支 Uploadify,但它们都有 2 年的历史并处理 Rails 2 和 3(并且 Uploadify 多年来没有更新)。所以考虑到发生了多少变化,我认为这确实是一个全新的问题:
在 Rails 4 中使用 AJAX 上传文件的最佳方式是什么?
【问题讨论】:
-
我认为这句话清楚地解释了为什么你总是“使用神奇的 jQuery 表单插件”;)
-
关于在 Rails 的表单助手旁边使用它的最流畅方式有什么建议吗?我在想我不应该使用 :remote=>true 而是让表单插件完成工作。
-
那个插件太棒了——刚刚试了一下,效果很好。感谢您提供信息丰富的问题:)
标签: ruby-on-rails ruby ajax file-upload ruby-on-rails-4