LoginSignup
35
20

More than 5 years have passed since last update.

rails-ujsとjquery-ujsで2回リクエストが送られる

Last updated at Posted at 2017-05-29

はじめに

Railsチュートリアルの拡張機能でいいね機能を実装した時に、Ajaxの処理のところで詰まったので記事にしました。
問題があったソースコードはこちらです。
いいね機能自体の実装が知りたい方はこちらのPRを参考にしてください

環境

  • Ruby 2.4.1
  • Rails 5.1.1

発生した問題

いいねボタンを押した時にいいねのカウントが2個増えたり、処理が固まったりする現象が発生しました。
処理が固まった時のエラーはこんな感じで出ていました。

ActiveRecord::StatementInvalid (SQLite3::BusyException: database is locked: commit transaction):
ActiveRecord::StatementInvalid (SQLite3::BusyException: database is locked: INSERT INTO "likes" ("user_id", "micropost_id", "created_at", "updated_at") VALUES (?, ?, ?, ?)):

スクリーンショット 2017-05-29 17.32.49.png

スクリーンショット 2017-05-29 17.33.49.png

解決方法

application.jsのjquery_ujsを外す。

 //= require jquery
-//= require jquery_ujs
 //= require rails-ujs
 //= require bootstrap
 //= require turbolinks

添付したエラーを見てみると、jqueryとrails-ujsの両方が呼ばれていることが分かります。
Rails5.1系からjQuery依存が無くなっているため、jquery_ujsの方を外しても良いでしょう。(参考)

35
20
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
35
20