1

remotipartとcarrierwaveを介して画像をアップロードしようとしています。fileuploadが正常に機能しているだけで、ajaxを介したファイルのアップロードを可能にするremotipart gemもインストールしました。問題は、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送信が実行されます。

私は自分のプロジェクトの1つでそれを使用しています(以下のフォームコードを参照)

<%= 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 に答える