問題
Rails5でAjaxを使って部分テンプレートの更新を行った際、ちょっと動作がもっさりしてるなーと思ったら、Ajaxによるリクエストが2回行われていた。
原因
application.js
//= require jquery
//= require jquery_ujs
//= require jquery.slick
//= require rails-ujs
//= require activestorage
//= require turbolinks
//= require_tree .
↑で読み込んでいるjquery_ujsとrails-ujsはどちらもajax処理を担うライブラリ。
2つとも読み込んでいるため、それぞれがajaxリクエストを行った結果、2回リクエストが発生していた。
対策
-
//= require jquery_ujsを削除。
調べてみたところ、Rails5.0以前ではremote:trueなformの動作にjquery_ujsが使用されていたが、5.1以降は脱jQueryを図るためrails-ujsに移行したのだとか。
参考
https://rails-school.net/rails51-jquery/
https://stackoverflow.com/questions/7411271/form-submitted-twice-due-to-remote-true