У меня есть действие контроллера, которое, как ожидается, будет вызвано 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.
Как мне передать детали аутентификации, чтобы это действие контроллера работало с devise? Еще лучше, есть ли способ сделать это прозрачным? Я не хочу передавать данные аутентификации снова и снова для каждого запроса 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);
});