2016-04-24 11 views
1
def create 
    @listing = current_user.listing.new(listing_params) 
    if @listing.save 
    if params[:attachment] 
     params[:attachment].each do |key, val| 
     @listing.attachments.create(attachment: val) 
     end 
    end 
    respond_to do |format| 
     format.json { render json: @listing } 
    end 
    end 
end 

リストの作成コントローラにそのコードがあり、画像とビデオの添付ファイルとしてdropzone JSを使用しています。オブジェクトを作成するまではすべてがうまくいっていますが、フォームが送信された後に新しく作成されたリストにリダイレクトする方法を理解できないようです。 ajaxリクエストはGETリクエストであり、POSTリクエストではなく、コントローラ内のcreateアクションによってオブジェクトがすでに作成されているため、POSTリクエストによって2つのオブジェクトが作成されます。私はレンダリングJSを使用してみましたが、レンダリングJSをウィンドウの位置でコントローラーで使用しましたが、何もしないか、フォーマットが正しくないというエラーが表示されます。後に新しいURLに移動するためにブラウザを指示するsuccess関数内Rails、AJAX、dropzone、carrierwave、リダイレクトの処理

location.href = "http://www.website.com/new_listing"

$('#new_listing').on('submit', function(e){ 
    e.preventDefault(); 
    e.stopPropagation(); 
    myDropzone.processQueue(); 
    var form = $(this); 
    var post_url = form.attr('action'); 
    $.ajax({ 
     type: "GET", 
    url: post_url, 
    dataType: "JSON", 
    success: function(data) { 
     console.log(data) 
    } 
    }); 
}); 

答えて

1

あなたは、現在のページ、使用を変更する方法を迷っている場合:これは私のJSですリスティングが作成されました。これは、そのURLを持つリンクをクリックするのと同じです。あなたのサーバーから受け取ったデータに新しいリストが含まれていると推測しています。これはURLの書式設定に使用します。

+1

私はそれに似たようなことをしました。コントローラーにJSON経由でリスティングIDをレンダリングさせ、JSのsuccess関数に渡してlocation.hrefに渡す必要がありました。 –

+0

私は一度にAmazone s3に5つ以上の画像をアップロードしようとしています。私のAJAXコードは 'success'ブロックにあります。 4つの画像を選択してアップロードするとどうなりますか?しかし、4つ以上の画像をアップロードするとアップロードされますが、 'success'ブロックでコールバックが取得されません。なぜなのかご存知ですか? – kpp