【问题标题】:Uploading a txt file without saving it to database using ajax使用ajax上传txt文件而不将其保存到数据库
【发布时间】:2012-11-11 16:58:39
【问题描述】:

我似乎一直在寻找让用户上传文本文件的最佳方法,让我的应用程序解析文件,然后通过 ajax 直接在同一页面上返回一些输出。有没有简单的方法可以做到这一点?

我一直在使用以下,它工作得很好,但我无法让它与 ajax 一起工作。

这里是视图文件 - index.html.erb

<%= form_tag 'log/new', :multipart => true do %>
<label for="file">Please upload a log file to continue</label> <%= file_field_tag "file" %>
<%= submit_tag ('Upload')%>
<% end %>

然后我可以使用 params[:file] 在我的控制器中播放结果,但是当我将 :remote =&gt; true 添加到我的表单时,它不会让我执行任何 AJAX 或运行我的 .js.erb 视图文件,大概是出于安全原因,因为 js 无法读取 XHR 请求 yadda yadda。

我也尝试过CarrierWavejquery-fileupload-rails gems,但我不想先将它保存到数据库中,载波似乎想要这样做,而 jquery-fileupload 似乎也这样做。无论如何,即使我使用其中一个 gem 将文件上传/保存到 db - 我如何能够像使用 params[:file] 方法一样访问内容?

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    如果你想用 AJAX 和 Rails 表单上传文件,你可以使用remotipart gem:

    Remotipart 是一个 Ruby on Rails gem,支持 AJAX 文件上传 Rails 3.0 和 Rails 3.1 远程表单中的 jQuery。这颗宝石增强了 支持异步的原生 Rails jQuery 远程表单功能 文件上传几乎不需要修改您的应用程序。

    对我来说,它也适用于 Rails 3.2。

    https://github.com/JangoSteve/remotipart

    http://rubygems.org/gems/remotipart

    【讨论】:

    • 这很完美!我所要做的就是添加remotipart gem,然后用:remote =&gt; true 标记我的表单,它会加载.js.erb 而不是.html.erb。我知道这一定很简单。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2021-05-31
    • 2012-07-26
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    相关资源
    最近更新 更多