2012-09-06 127 views
1

我遇到了rails 3.2.8和ajax回調的問題......它似乎根本沒有發射......我嘗試過使用Jquery代碼綁定(我可以看到Chrome工具箱上的js腳本),我甚至嘗試在link_to上放置:success =>'alert(「bla」)',但它仍然沒有任何作用...控制器自我的行開始工作實際上已被刪除...但無法綁定到回調!請幫忙!Rails 3.2.8不發射ajax回調

這是我的觀點一致:

<td><%= link_to 'Destroy', pet, :method => :delete, :remote=>true, :class => 'delete_pet' %></td> 

這裏是我的控制器操作

def destroy 
    @pet = Pet.find(params[:id]) 
    @pet.destroy 

    respond_to do |format| 
     format.html { redirect_to(pets_url) } 
     format.js { render :nothing => true } 
    end 
    end 

這裏是我的js代碼:

jQuery(function($) { 
    $('.delete_pet').bind("ajax:before", function(){alert('bla2');}) 
        .bind("ajax:success", function(){alert('bla2');}) 
        .bind("ajax:failure", function(){alert('bla2');}) 
        .bind("ajax:complete", function(){alert('bla2');}); 
}); 
+1

確保源中沒有包含衝突的jQUery。檢查瀏覽器控制檯是否有任何輸出。 –

+0

天才!這是問題!在我的一個嘗試..我包括手動jQuery文件在我的application.js ...沒有錯誤..但這似乎與鐵軌jquery衝突!謝謝! – varholl

回答

0

的問題是,在我的application.js我包括手動jQuery的文件......這樣的..

//= require jquery-ui-1.8.23.custom 

羞辱我吧!

0

更換

format.js { render :nothing => true } 

format.json { render :nothing => true } 

,並與

<%= link_to 'Destroy', pet, :method => :delete, :remote=>true, 'data-type'=>'json', :class => 'delete_pet' %> 
+0

我做到了這一點,但現在..在鉻工具箱「我得到這個錯誤GET http:// localhost:3000 /寵物404(未找到)」 – varholl

+0

替換:format =>:JSON與'數據類型'=>' json' – emrahbasman

+0

謝謝Emrah,但是這並沒有解決問題......現在它什麼都不做......沒有錯誤,就像在開始時一樣。 – varholl

0

我一直有與respond_to塊類似的問題取代

<%= link_to 'Destroy', pet, :method => :delete, :remote=>true, :class => 'delete_pet' %> 

。我通過檢查request暫時得到它。例如,你的代碼看起來像:

def destroy 
    @pet = Pet.find(params[:id]) 
    @pet.destroy 

    if request.xhr? 
    # the request was received via an AJAX request 
    render :nothing => true 
    else 
    redirect_to(pets_url) 
    end 
end 

不一樣優雅的resond_to塊,但它似乎有望可靠地工作。

祝你好運!

+0

不,它不工作..但是,我的項目可能是錯誤的..我的意思是,不是事件的Ajax:在回調之前不是射擊..應該不是在ajax調用之前發射? – varholl