railsでjsが2回評価されるときの対処法
個人的にハマっていたことの備忘録。railsでAjaxを実装したところ処理が2回評価されこれに1週間くらいハマった。
例えばdeleteをしようとすると
- You sure? => ハイハイ、シュアシュア。
- You sure? => ファッ!?
と、alertが2回表示される感じ。これだけならまだ良いがkaminariでページネーションを実装するとこれが大変なことになった。このままだと欲しい機能が実装出来ないので色々な記事を参考にしながら当該事象の発生条件を整理。
js関連の何かだと思いながらも、初学者の癖にいっぺんに色々と実装してしまったり、railsでいくつかのプロジェクトを同時に進行していたがために何が原因かの切り分けに時間が掛かった。
具体的には以下の対応で処理が正しく評価されるようになった。
- config/environments/development.rbを編集
- config.assets.debug = trueとなっていたのをfalseに変える
- ターミナルからローカルでrake assets:cleanする(bundle execは付けない)
原因はいくつかのアプリを作っていた際にそのうちのどれかでrake assets:precompileしたのだがこのときに端折ってbundle execを忘れてしまったことだと思う。