导轨AJAX上传的形式与Remotipart [英] Rails AJAX upload form with Remotipart

查看:151
本文介绍了导轨AJAX上传的形式与Remotipart的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在抨击我的头试图让一个AJAX上传表单的工作。我使用Rails 3.2。我把宝石remotipart,〜> 1.0在我的Gemfile,跑捆绑安装并成功安装

I've been bashing my head trying to get an AJAX upload form working. I'm using Rails 3.2. I put gem "remotipart", "~> 1.0" in my Gemfile, ran bundle install and it installed successfully.

我previously过这样的非Ajax上传表单,这是我加入:远程=>真正的来按在 github上页文献:

I previously had this non-ajax upload form, which I added :remote => true to as per the literature on the 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的,因为它认为必要的,尽管那里是没有明确的指示这样做的。

I added a javascript include on my page for jquery.remotipart.js because it felt essential, albeit there being no explicit instruction to do so..

我试了一下,并没有给人一种服务器错误:

I tried it and it failed giving a server error:

Completed 500 Internal Server Error in 4ms

NoMethodError (undefined method `original_filename' for nil:NilClass):
app/controllers/data_imports_controller.rb:16:in `create'

很明显我在做一些根本性的错误,但我需要一只手。

It's clear I'm doing something fundamentally wrong, but I need a hand.

推荐答案

一吨的调试,并通过大量的code看完之后,我终于有最新的宝石(1.0.2)使用Rails 3.2.8的工作。我被钉三个陷阱:

After a ton of debugging and reading through lots of code, I finally have the latest gem (1.0.2) working with Rails 3.2.8. I was nailed by three gotchas:

  1. 在我被禁用我以前的文件输入字段表单提交,这将导致remotipart忽略它列入IFRAME提交。你必须确保你的文件输入被启用。这可能是你所看到的,为什么指定一个不同的选择的'文件'属性为你工作。
  2. 在我的调试过程中,我被重写jquery.iframe运输与最新的上游源头,它并没有为在iframe在X-HTTP-接受隐变量的支持。您必须使用捆绑在一起的remotipart宝石的版本。
  3. 请不要忘了要连接一个回调的ajax:填写表格。如果您使用的数据类型比脚本等。这是默认的,如果你没有在全局AJAX选项指定数据类型或使用的数据类型属性的形式。

这篇关于导轨AJAX上传的形式与Remotipart的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆