#Rails 5.1 link_to deleteメソッドがGetメソッドになる。
ある日、deviseでログアウトを作って、
<%= link_to 'ログアウト', destroy_user_session_path, method: :delete %>
ログアウトを試してみたら、ルーティングエラーが起きた。
そして何故か、ログを見てみたらGetでアクセスしている。
html見ても
<a rel="nofollow" data-method="delete" href="/users/sign_out">ログアウト</a>
しっかりdeleteになってる。
#解決方法
##rails-ujs
ruby on rails 5.0まではjqueryに依存していてjquery-ujsを使ってたらしいですが、5.1以降ではもうjqueryに依存していないので、rails-ujsを使うそうです。
$ yarn add rails-ujs
application.jsに追加。
app/javascript/packs/application.js(webpacker)
(省略)...
import Rails from 'rails-ujs'
Rails.start()
または、
app/assets/javascripts/application.js
//= require rails-ujs
自分の場合はこれで直りました。
#参考にさせて頂きました。
Rails 5.1を使うならSprocketsは捨ててwebpackを使おう