2016-04-24 87 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請求最終創建兩個對象。我試過使用窗口位置在控制器中渲染JS,但沒有任何內容,或者我得到一個錯誤,說格式不正確。這是我的JS:Rails,AJAX,dropzone和carrierwave,處理重定向

$('#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

如果你想知道如何改變當前頁面,使用:

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

success函數內直接將瀏覽器進入到新的URL後該列表已創建。這與點擊帶有該URL的鏈接相同。我猜你從服務器收到的數據包含新的列表,你將用它來格式化URL。

+1

我最終做了類似的事情,我必須讓控制器通過JSON呈現列表ID並將其傳遞給JS中的成功函數,並將其傳遞給location.href。 –

+0

我試圖在Amazone s3上一次上傳超過5張圖片,我的AJAX代碼在'success'塊中。如果我選擇4個圖像並上傳,它會發生什麼情況。但是,如果我上傳超過4張圖片,則會上傳,但不會在「成功」塊中獲得回叫。你知道爲什麼嗎? – kpp