Javascript Rack::Request aftet use FormData函数中出错
我有Rails 3.2.13上的webapp。如果我提出ajax请求:Javascript Rack::Request aftet use FormData函数中出错,javascript,jquery,ruby-on-rails,rake,form-data,Javascript,Jquery,Ruby On Rails,Rake,Form Data,我有Rails 3.2.13上的webapp。如果我提出ajax请求: $.ajax( { url: '/my_action', type: 'POST', data: new FormData( $('#my-form-id') ), cache: false, processData: false, contentType: false } ); return false; 我有以下错误: TypeError - no
$.ajax( {
url: '/my_action',
type: 'POST',
data: new FormData( $('#my-form-id') ),
cache: false,
processData: false,
contentType: false
} ); return false;
我有以下错误:
TypeError - no implicit conversion of nil into Hash:
rack (1.4.5) lib/rack/request.rb:221:in `params'
rack-openid (1.3.1) lib/rack/openid.rb:94:in `call'
原因是将jQuery对象发送到FormData而不是HTML元素中。它发送了空POST参数,Rack::Request无法处理它
我的问题:是错误、漏洞还是RoR的特征?在jQuery中是否有FormData的替代方案?很可能是发送了格式错误的参数。FormData不一定是罪魁祸首,表单本身可能不可用。你试过手动提交吗?手动提交可以。在表单上,我只有一个文件字段。啊,一个文件字段!问题是,没有一种简单/通用的方法可以通过ajax发送多部分表单。请看一看哪些尝试解决此问题。您可以在这里更详细地了解这个问题:无论我设置了哪种字段类型。文本字段也失败了。对于此类请求,self.POST==nil进入Rack::request中的params函数。如果我写data:new-FormData$'my-form-id'[0]都可以很好地工作,尤其是对于file field.Hmm,这很有趣。如果我提出任何关于你的问题的建议,我会回复你的。