2012-01-27 53 views
0

我正在做一些AJAX的Rails的東西(不使用UJS,而是滾動我自己的AJAX)。我的動作看起來像:在Rails 3.1操作中停止重定向?

# DELETE /votes/1 
# DELETE /votes/1.json 
def destroy 
    @vote = Vote.find(params[:id]) 
    Comment.increment @vote.comment_id, :up_votes => -1 
    @vote.destroy 

    respond_to do |format| 
    format.html { redirect_to votes_url } 
    format.json { head :ok } 
    end 
end 

正在通過JavaScript阿拉叫這個動作:

ajaxOptions = { 
     url: $(this).attr("href"), 
     type: $(this).attr("data-method"), 
     data: { 
     comment_id: $(this).attr("data-comment_id"), 
     _method: 'delete' 
     }, 
     success: function(response) { 
     return someFunc(); 
     } 
    }; 
    $.ajax(ajaxOptions); 

然而,發生了什麼是動作重定向到投票列表頁面。我希望它不會重定向,只是返回一些積極的狀態到JavaScript,以便我的someFunc()可以執行沒有問題。

我該如何做到這一點?

+0

你確定'format.json'是正確的?我通常會看到'format.js' ... – MrTheWalrus 2012-01-27 15:44:37

回答

1

更改您的respond_to處理程序的Javascript而不是JSON:

respond_to do |format| 
    format.html { redirect_to votes_url } 
    format.js { head :ok } 
end 
+0

它仍然會像HTML處理程序正在運行一樣調用重定向。該動作是否知道它是通過JavaScript調用的? – Shamoon 2012-01-27 15:51:42

+0

嘗試在URL中添加'format = js'參數,或者在路徑末尾添加'.js'。 – Thilo 2012-01-27 18:37:17