0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Railsチュートリアル】 いいねが二回リクエスト送信される(rails-ujs)

Last updated at Posted at 2018-07-31

はじめに

いいねボタンを押したら本来一回しかリクエストが飛ばないはずなのに、2回リクエストしてしまう現象が発生しました。その時の原因対応メモです。

現象

いいねボタンを押した時の様子。Googleクロームのデベロッパーツールで見るとこんな感じ。生成も削除も二回。

ajax-duble.PNG

通信のコード元はjqueryrails-uis、この箇所で通信されている様子。はて?

原因

色々調べると今までRailsからクライアントサイドを操作するためにjquery-ujsが使用されていたみたいですが、Rails5.1からはJquery依存がなくなったrails-ujs使うようになった様子。jquery_ujsからrails-ujsに変更されたにもかかわらず、jquery_ujsrails-ujsを混在させていたのが原因みたいでした。どうやら自分がいつの間にかに混在させてしてしまっていたみたいです。。
jquery-ujsとはRuby on RailsについてくるJavaScriptのライブラリのようです。

  • jquery → jquery-ujs
  • rails-ujs

この2つの流れが存在し、2回リクエストを送っていたんだと思います。

app/javascript/application.js
//= require jquery
//= require jquery_ujs
//= require rails-ujs
//= require turbolinks
//= require_tree .

Rails5.1でrails new された時は恐らく下。# rails -v Rails 5.1.6

//= require rails-ujs
//= require jquery
//= require bootstrap
//= require turbolinks
//= require_tree .

対応

Rails5.1からはjquery_ujsrails-ujsに移行するということなのでjquery_ujsを削除しました。結果、問題なく動作するようになりました。めでたしめでたし。

・
//= require jquery
- //= require jquery_ujs
//= require rails-ujs
//= require turbolinks
//= require_tree .
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?