発生した問題
本来Deleteメソッドで送信したいリクエストが、Getメソッドによって送信されてしまう。
具体的には、
- Scaffoldで生成したindex画面のDestroyリンクがshowへ遷移
- deviseで認証を導入したが、ログアウトを使用とするとルーティングエラーが発生
こんな感じのエラー。
Started GET "/users/sign_out" for ::1 at 2015-09-25 20:41:26 +0900
ActionController::RoutingError (No route matches [GET] "/users/sign_out")
該当部のコード
= link_to 'ログアウト', destroy_user_session_path, method: :delete
ちゃんと:method
も書いているのになんでだろう、、
原因
"layouts/application.html.erb"にてデフォルトのjavascriptタグを削除していたことが原因である模様。下記のタグを入れたところ問題は解決。気付かぬうちに削除しちゃってたみたいです。
# views/layouts/application.html.erb
= javascript_include_tag 'application'
なお、どうやらこの部分で必要なjavascriptを読み込んでいるようです。
# app/assets/javascripts/application.js
//= require jquery
//= require jquery_ujs