jQuery.ajaxSetup() でRails CSRFトークンを付与する

Rails のAJAX通信するときは、CSRFトークンの付与が必要。

rails-ujs/rails/requestjs-rails を使う

Rails Wayでこれを解決するなら rails-ujs を使ったり rails/requestjs-rails を使う必要がある。

const data = new FormData();
data.append("some_key", "some value");

Rails.ajax({ ... })
import { Controller } from '@hotwired/stimulus'
import { post } from '@rails/request.js'

export default class extends Controller {
  async hoge() {
    const response = await post("/some_resources", {
      body: { some_key: "some value" }
    })
    ...
  }
}

ref. 【Rails7】Ajaxリクエスト時にCSRF tokenを含める(おそらく)公式のやり方 - Qiita

jQuery.ajaxSetup() を使う

上記のライブラリを使わない場合 + jQuery を使っている場合は jQuery.ajaxSetup() を使うのがてっとり早い。

これを設定したうえで jQuery で AJAX すれば自動でAJAXに CSRF-TOKEN が付与される。

$.ajaxSetup({
	headers: {
		'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
	}
});

ref. jQueryの$.ajaxSetupを使ってAJAX通信時のデフォルト値を設定する - Qiita

参考