2011-03-28 68 views
8

我有一個使用devise和AJAX登錄的問題。我使用的是:remote => true選項和javascript助手的jQuery版本(https://github.com/rails/jquery-ujs)。 Ehen用戶輸入正確的信息後,會話視圖中的我的create.js.erb被呈現。這是好的,'因爲我可以在這個文件中使用JS重定向我的用戶。但是當發生錯誤時,例如用戶輸入虛假信息,只有閃光消息在響應中,錯誤代碼爲401 - Unauthorized。所以,沒有view或create.js.erb或者sth else被渲染。 但我想處理這個消息,通過顯示它的側面,以便用戶得到一些反饋,什麼是錯的。用rails 3和remote設計=> true

我也試圖實現我自己的自定義控制器與respond_to :js,並玩監獄長認證的方法。但它不起作用。

有沒有人知道一些最佳實踐來解決這個問題?或者我應該避免這個幫助器方法,並只使用純jQuery的Ajax調用?

THX, 禮服

回答

9

你可以使用jQuery的事件:在軌道3「Ajax錯誤」就在事件綁定到你的表單。

jQuery(function($) { 
    $("#new_model").bind("ajax:error", function(event, data, status, xhr) { 
    alert("something went wrong"); 
    }); 
}); 

查看此blog post瞭解有關可用事件的更多詳細信息。

+0

謝謝你的回答。它爲我工作,但我必須更換ajax:ajax失敗:錯誤 – 23tux 2011-03-29 08:47:35

+0

我更新了我的答案,因爲其他人不讀取評論。 – 2011-03-30 19:37:59

1

這裏是我的版本

<script> 
    $(document).ajaxError(function(e, XHR, options){ 
    if (XHR.status == 401){ 
     window.location.replace("<%= new_user_session_path %>"); 
    } 
    }); 
</script> 

它會自動將用戶重定向到登錄頁面,並適用於網頁上的所有元素。

相關問題