jqueryでlocationを使っているところがあり、logoutの通信はdelete通信なので修正の必要があった。
$.ajax{}を使うことによりdelete通信を可能に。
ただ、引数のdataにcsrf-tokenを付与する必要がある。
通信成功後はmethodがdelete通信を引き継いていたのでtypeをpostに変更。通信成功後にlocationでget通信を可能にした
if(tempUrl === “/logout”){
let data = $.extend(data, {authenticity_token: $(‘meta[name=”csrf-token”]’).attr(‘content’)});
data._method = “DELETE”
return $.ajax({
url: tempUrl,
data: data,
type: “POST”,
cache: false
}).done(function (response, textStatus, jqXHR) {
window.location.href = “/login”
tempUrl = “”; // 移動ボタンをクリックしたらtempUrlをリセット
})
}
へッダから CSRF token 拾ってつける
<%= csrf_meta_tags %>
コメント