Railsを使ったアプリケーションの開発を行なっていて、認証をdeviseという超便利なgemに任せるという方は、多いのではないでしょうか。
今回、そんなdeviseを利用中に、"ログアウト"機能がうまくいかず、デバックに少し時間がかかったので、こちらにその方法を残しておきます。
環境: Rails 5.1.7 , ruby 2.4.1
最初、
$ rails routes
とすると、
destroy_admin_session DELETE /admins/sign_out(.:format) admins/sessions#destroy
と書いてあるので、以下のようにしました。
<%= link_to 'ログアウト', destroy_admin_session_path, method: :delete %>
すると、、、、
と出ました。
【解決策】
application.jsに require jquery_ujs
を追加すればいけました。(このアプリケーションでは、bootstrap4を導入しています。)
app/assets/javascript/application.js
//= require jquery3
//= require popper
//= require bootstrap-sprockets
//= require jquery_ujs
bootstrap4導入していない方は、
app/assets/javascript/application.js
//= require jquery3
//= require jquery_ujs
でいけるはずです。
参考: https://stackoverflow.com/questions/6965876/ruby-on-rails-devise-users-sign-out-not-working
以上です!