使用带有AJAX登录的设计时遇到问题。我正在使用:remote => true
选项和javascript版本的javascript助手(https://github.com/rails/jquery-ujs)。
用户输入正确的信息后,会在会话视图中呈现我的create.js.erb。这没关系,因为我可以在这个文件中使用JS重定向我的用户。但是当发生错误时,例如用户输入错误信息,只有闪存消息在响应中,错误代码为401 - Unauthorized
。因此,不会呈现视图或create.js.erb或其他。
但是我希望通过在侧面显示它来处理这个消息,以便用户获得一些反馈,但是错误。
我还尝试使用respond_to :js
实现自己的自定义控制器,并使用warden身份验证的:recall
方法。但它不起作用。
有人知道解决这个问题的一些最佳做法吗?或者我应该避免使用这种辅助方法,只使用纯jQuery进行ajax调用吗?
THX, TUX
答案 0 :(得分:9)
您可以在rails 3中使用jQuery事件“ajax:error”。只需将事件绑定到您的表单。
jQuery(function($) {
$("#new_model").bind("ajax:error", function(event, data, status, xhr) {
alert("something went wrong");
});
});
请查看此blog post,详细了解可用的活动。
答案 1 :(得分:1)
这是我的版本
<script>
$(document).ajaxError(function(e, XHR, options){
if (XHR.status == 401){
window.location.replace("<%= new_user_session_path %>");
}
});
</script>
它会自动将用户重定向到登录页面,并适用于页面上的所有元素。