rails6 devise使用時 エラー「No route matches [GET] “/users/sign_out”」が発生した場合

rails6 devise使用時 エラー「No route matches [GET] “/users/sign_out”」が発生した場合

rails6でdevise使用時にログアウトを実行して、エラー「No route matches [GET] “/users/sign_out”」が発生した場合の対処法を記述してます。Railsのバージョンは6.1.3を使用してます。

環境

  • OS CentOS Linux release 7.9.2009 (Core)
  • Ruby 3.0.0
  • Rails 6.1.3

エラー全文

ログアウト実行時に発生

No route matches [GET] "/users/sign_out"

対処法

まずは、view側のmethodを「delete」から「get」に変更します。

<%= link_to "ログアウト", destroy_user_session_path, method: :delete %>

↓ 変更

<%= link_to "ログアウト", destroy_user_session_path, method: :get %>

次に「config/initializers」にある「devise.rb」の以下の箇所も「delete」から「get」に変更します。

  # config.sign_out_via = :delete
  config.sign_out_via = :get

後は、railsを再起動すれば、自分の場合は解決しました。