当用户想要执行需要他先登录的操作时,devise 会将他重定向到登录页面并设置一个闪烁消息:“请先登录或注册,然后再继续”。这适用于无 ajax 请求。但是对于同样需要先登录的 ajax 请求,它会响应 401 错误,我们应该手动处理它,如下所示:
$.ajax({
url: '/books/user_score',
type: 'POST',
data: { score: value, book_id: book_id },
dataType: 'json',
success: function(data) {
bookStarWidget.data('starInfo', data.book_star);
setVote(bookStarWidget);
$("[name='my_vote']").rating('disable');
},
error: function(jqXHR, textStatus, errorThrown) {
if (jqXHR.status == 401) {
window.location.assign('/users/sign_in');
}
}
});
在上面的代码中,我们在收到设备发出的 401 错误时手动打开登录页面。问题是没有以这种方式设置闪存消息。那么有人可以知道如何像往常一样设置闪存消息以保持一致的行为吗?