Rails|Deviseのログアウトでルーティングエラー
事象
ユーザー認証にDeviseを使用しているのですが、サインアウトをしようとした際、以下のようにエラーになってしまいます。 ログインまわりのソースコード↓
<% if user_signed_in? %> <!-- current_user は現在ログインしているUserオブジェクトを返すdeviseのHelperメソッド --> <!-- *_path はUserモデルを作成したときに、 deviseにより自動で作成されてますので、rake routesで確認できます --> Logged in as <strong><%= current_user.email %></strong>. <%= link_to 'プロフィール変更', edit_user_registration_path %> | <%= link_to "ログアウト", destroy_user_session_path, method: :delete %> <% else %> <%= link_to "サインイン", new_user_registration_path %> | <%= link_to "ログイン", new_user_session_path %> <% end %>
対応方法
DeviseはデフォルトでDELETEメソッドによりサインアウトさせていますが、今回はこれをGETに変更します。
① hmtl上で送信する際のメソッドを変更
② /config/initializers/devise.rb の config.sign_out_via のメソッドをGETに変更