ruby-on-rails – 使用Remotipart的Rails AJAX上传表单
我一直在试图让
AJAX上传表格正常工作.我正在使用Rails 3.2.我在我的Gemfile中放了gem“remotipart”,“?> 1.0”,运行bundle install并成功安装.
我之前有这个非ajax上传表单,我添加了:remote =>符合github page的文献: <%= form_tag "/administration/data_imports",:multipart => true,:remote => true %> <label for="file">Input File</label> <%= file_field_tag "file" %> <button type="submit">Import Data</button> </form> 这在我的data_imports_controller创建动作中: def create file = params[:file] filename = file.original_filename end 我在jquery.remotipart.js的页面上添加了一个javascript包含,因为它感觉很重要,尽管没有明确的指示这样做. 我试了一下,它没有给出服务器错误: Completed 500 Internal Server Error in 4ms NoMethodError (undefined method `original_filename' for nil:NilClass): app/controllers/data_imports_controller.rb:16:in `create' 很明显我做了一些根本错误的事情,但我需要一只手. 解决方法
经过大量的调试和阅读大量代码后,我终于得到了最新的gem(1.0.2)与Rails 3.2.8一起工作.我被三个陷阱钉了:
>我在表单提交之前禁用了我的文件输入字段,这导致remotipart忽略它以包含在iframe提交中.您必须确保已启用文件输入.这可能就是您所看到的,以及为什么为’files’属性指定不同的选择器适合您.>在我的调试过程中,我使用最新的上游源覆盖了jquery.iframe-transport,并且它不支持iframe中的X-Http-Accepts隐藏变量.您必须使用与remotipart gem捆绑在一起的版本.>如果您使用的是“脚本”以外的数据类型,请不要忘记为ajax连接回调:在表单上完成.如果未在全局ajax选项中指定dataType,或者在表单上使用data-type属性,则这是缺省值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |