加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用Remotipart的Rails AJAX上传表单

发布时间:2020-12-17 03:03:39 所属栏目:百科 来源:网络整理
导读:我一直在试图让 AJAX上传表格正常工作.我正在使用Rails 3.2.我在我的Gemfile中放了gem“remotipart”,“? 1.0”,运行bundle install并成功安装. 我之前有这个非ajax上传表单,我添加了:remote =符合github page的文献: %= form_tag "/administration/data_i
我一直在试图让 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属性,则这是缺省值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读