プログラミングガール

Developing a better me

Rails|Deviseのログアウトでルーティングエラー

事象

ユーザー認証にDeviseを使用しているのですが、サインアウトをしようとした際、以下のようにエラーになってしまいます。 f:id:hana_ori:20161117195612p:plain ログインまわりのソースコード

<% 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上で送信する際のメソッドを変更

f:id:hana_ori:20161117201112p:plain

② /config/initializers/devise.rb の config.sign_out_via のメソッドをGETに変更

f:id:hana_ori:20161117201130p:plain