どうやらTurbolinkが非同期通信に悪影響を与えていた模様(Rails, JavaScript)
今回取り組んだのはいいね機能の非同期通信。
非同期通信は4日前からずっと未解決の問題があった。
それはJS形式のリクエストが送れないこと。
link_toやform_withではデフォルトでJSリクエストが送信される。
しかしなぜかブラウザがリロードされるHTML形式のリクエストが送られてしまい、この問題の原因究明に悩まされた。
今日素のJavaScriptで非同期通信を実装していたらその原因を突き止めることができた。この問題の原因はTurbolinkにあった。
Turbolinkは一度訪れたことがある画面や戻るボタンを押した時にキャッシュをうまいこと残してくれて画面遷移を高速にしてくれるライブラリだ。
しかしログを観察していると、このライブラリは画面遷移をするときに
コンパイル済みのJSファイルを読み込んでいなかったのだ。
試しに画面遷移した直後に非同期通信を実装済みの機能を使ってみたら、予想通り動作しなかった。このTurbolinkを一部無効化して再度動作確認をしたら正常に動作した。
そして今までできなかったJS形式の通信に挑戦してみたら正常に動作させることができた。
↓JS形式で送信されたリクエスト
↓HTML形式で送信されたリクエスト
やっとのことでJqueryを用いた非同期通信に取り組むことができた。
現在は変数の受け渡し時に書く、locals: { favorites: @favorites, job: @job })
のような記述にまだ慣れが必要そうだ。
明日も引き続きJqueryの扱い方を学んで、非同期通信の拡充を目指したい。
この記事が気に入ったらサポートをしてみませんか?