我有一个控制器动作,预计由jquery调用。这是电话:
$.ajax({
url: "/comments.json",
type: "POST",
dataType: "json",
data: {
commentable_id: $("#addCommentForm").attr("data-site-update-id"),
commentable_type: 'SiteUpdate',
content: $("#addCommentForm textarea#content").val()
},
success: function(comment) {
}
});
它工作正常,但由于某种原因,“current_user”在控制器内部为零。如果我强制authenticate_user!作为过滤器,rails返回HTTP Unauthorized。
如何传递身份验证详细信息,以便此控制器操作与设计一起使用?更好的是,有没有办法让我透明化?我不想为每个ajax请求反复传递身份验证详细信息...
在Java中,一旦用户登录......他们就会登录。你没有从url到url传递任何东西 - 它在某个地方的某个会话中,并且它都是透明地发生的。有没有办法用铁轨做到这一点?我不想专注于这些细节。
由于
编辑:解决方案是将以下内容添加到您的javascript中:
$(document).ajaxSend(function(e, xhr, options) {
var token = $("meta[name='csrf-token']").attr("content");
xhr.setRequestHeader("X-CSRF-Token", token);
});