Ruby on rails 通过rails remotipart gem上传ajax文件

Ruby on rails 通过rails remotipart gem上传ajax文件,ruby-on-rails,ruby-on-rails-3,carrierwave,remotipart,Ruby On Rails,Ruby On Rails 3,Carrierwave,Remotipart,我一直在尝试通过remotipart和carrierwave上传图像。简单的文件上传工作正常,我还安装了remotipart gem,它支持通过ajax上传文件。现在的问题是如何通过ajax发送文件(我指的是jquery部分) 这就是我试图将文件发送到控制器的方式,但它不起作用 $("#upload").live("submit",function(e) { e.preventDefault(); var report ={}; report.file =$("#new

我一直在尝试通过remotipart和carrierwave上传图像。简单的文件上传工作正常,我还安装了remotipart gem,它支持通过ajax上传文件。现在的问题是如何通过ajax发送文件(我指的是jquery部分)

这就是我试图将文件发送到控制器的方式,但它不起作用

$("#upload").live("submit",function(e) {

    e.preventDefault();
    var report ={};
    report.file =$("#new_upload").find('#upload_name').val(); 

    $.ajax(this.action, {
        data:  report,
        iframe: true,
        processData: false
    }).complete(function(data) {
        console.log(data);
    });
}); 
这是我的表格代码:

<%= form_for(@upload,:url => { :action => "save_remotipart" },:html => {:multipart => true },:remote => (params[:action] ==  true )) do |f| %>

  <fieldset>
    <legend class='required'>
      Required fields
    </legend>
      <div class="field">
        <%= f.label :name %><br />
        <%= f.file_field :name %>
      </div>
    </fieldset>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
请帮助我。

您不必执行$(“#upload”).live(){},在表单中添加:remote=>true将执行Ajax提交,并正确完成文件上载

我正在我的一个项目中使用它(参见下面的表单代码)

true,:multipart=>true do | f |%>
false,:input_html=>{:rows=>'2',:id=>“ibtb”}%>
假%>
我使用的是simple_form gem,但它也应该适用于普通表单,因为这两种表单最终都会生成HTML。gem页面中的示例也没有使用简单的表单


希望这有帮助。

我也有同样的问题。请点击此链接,可能会有所帮助

如果我有多个同名但数据不同的文件以及其他输入数据,该怎么办?你想提供以相同形式上载多个文件的功能吗?是的。。使用相同的名称,这些输入将动态生成。hi@RaghavanKandala,当您通过ajaxmy simple_表单上载文件时,导航器(firefox)底部出现了一条永不停止显示的消息,该消息是“从[localhost]传输数据”,但remotipart无法使用,不确定原因,但是,如果我制作自己的按钮和侦听器(即不是:提交按钮),并用javascript手动提交表单,它将使用remotipart:
:javascript$(document.ready(function(){$(“#ajax创建公共图像表单btn”)。单击(function(e){$form=$('#ajax创建公共图像表单');$form submit();})
{"object Object"=>nil}
<%= simple_form_for @post, :remote => true, :multipart => true do |f| %>

            <%= f.input :content, :label => false, :input_html => { :rows => '2', :id => "ibtb" } %>


        <%= f.input :file, :label => false %>

        <%= f.button :submit, "Post" %>
<% end %>