1

我一直在尝试通过 remotipart 和carrierwave 上传图片。只需 fileupload 工作正常,我还安装了 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 %>

提交表单时没有参数发送到服务器。在中止我得到这个:

{"object Object"=>nil}

请帮我。

4

2 回答 2

2

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

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

<%= 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 %>

我正在使用 simple_form gem,但它也应该适用于普通表单,因为它们最后都会生成 HTML。gem 的github页面中的示例也没有使用 simple_form。

希望这可以帮助。

于 2013-02-18T11:28:03.307 回答
0

我遇到过同样的问题。按照此链接可能会有所帮助。http://www.javaroots.com/2015/04/asynchronous-file-uploads-in-rails.html#disqus_thread

于 2015-04-27T12:31:06.283 回答