ブラウザでTurbolinkのWarnigが出たとき
TurbolinkのWarning問題
状況ブラウザの検証ツールで見ると、次のようなWarnigが出る
You are loading Turbolinks from a <script> element inside the <body> element. This is probably not what you meant to do! Load your application’s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change. For more information, see: https://github.com/turbolinks/turbolinks#working-with-script-elements
turbolinkをhtmlで読むときはhead内に書いてねと言っている
こちらの記事がすぐヒットした
Turbolinks を body タグ内で start させてはいけない · GitHub
原因
しかし今回は正しく記述しているので上記が原因ではなかった
理由: javascriptを二重に読み込んでいた
- application.jsでjavascriptの読み込みをjsディレクトリ全体に指定
- application.html.hamlでapplication.jsを読むようにheadに記述
解決
application.html.hamlのjavascriptの読み込みの記述を削除
↑これでエラーは出なくなるが,別の問題が生じた
問題: deviseでsign_outを正しく記述してもリクエストがGETで送信される
$ rails routes を実行すると以下のように正しくなっているのになぜ
$ destroy_user_session DELETE /users/sign_out(.:format)
deviseのセッションの消去を正しく使うには、viewでjavascriptの読み込みを正しく行う必要がある
# 誤り = javascript_include_tag 'application', media: 'all', 'data-turbolinks-track' => true # 正しい: turbolinksのreloadの記述 = javascript_include_tag 'application', 'data-turbolinks-track': 'reload'
やっとsign_outが直った