190527 ログアウトのDELETEリクエストがエラーになる。

本日やったこと

ログイン機能の作成

問題

ブラウザからログアウトのリクエストを送付するとエラーが出てしまう。

http://localhost:3000/logout
Routing Error
No route matches [GET] "/logout"
Rails.root: /Users/bupolang/projects/cocologue


環境

各種ファイル

config/routes.rb はこのように書いています。   

Rails.application.routes.draw do
  root to: 'toppages#index'

  get 'login', to: 'sessions#new'
  post 'login', to: 'sessions#create'
  delete 'logout', to: 'sessions#destroy'

  get 'signup', to: 'users#new'
  resources :users, only: [:show, :new, :create]
end



app/views/layouts/application.html.erb は以下のように書いています。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>Cocologue</title>
    <%= csrf_meta_tag %>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
  </head>

  <body>
    <%= render 'layouts/navbar' %>

    <div class="container">
      <%= render 'layouts/flash_messages' %>

      <%= yield %>
    </div>
  </body>
</html>



試したこと・考えたこと

ルーティングでdelete 'logout', to: 'sessions#destroy'としているにもかかわらず、送られているリクエストのVerbがGETなのがおかしい。DELETEになるはず。

RailsAPIドキュメントの link_toの欄を参照すると、

「Note that if the user has JavaScript disabled, the request will fall back to using GET.」

とある。DELETEリクエストがGETに変わってしまっているのは、Javascriptが関係しているのかも?

下の記事を参照すると、

同じ問題が起きているユーザに対して「jquery/jquery_ujsなどのライブラリを必要とするビルトインのJavascriptライブラリを有効にしたか?」と聞いている回答者がいた。

No route matches [GET] "/logout" [rails] - Stack Overflow

そこで、Gemfileにgem 'jquery-rails'を追記し、 bundle update したけれど、やはり同じエラー。

今日はここまで。