問題
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