LoginSignup
32
36

More than 5 years have passed since last update.

Railsでリンククリックした際に、Deleteの代わりにGetが送信されてしまう

Posted at

発生した問題

本来Deleteメソッドで送信したいリクエストが、Getメソッドによって送信されてしまう。

具体的には、

  • Scaffoldで生成したindex画面のDestroyリンクがshowへ遷移
  • deviseで認証を導入したが、ログアウトを使用とするとルーティングエラーが発生

こんな感じのエラー。

Started GET "/users/sign_out" for ::1 at 2015-09-25 20:41:26 +0900
ActionController::RoutingError (No route matches [GET] "/users/sign_out")

該当部のコード

= link_to 'ログアウト', destroy_user_session_path, method: :delete

ちゃんと:methodも書いているのになんでだろう、、

原因

"layouts/application.html.erb"にてデフォルトのjavascriptタグを削除していたことが原因である模様。下記のタグを入れたところ問題は解決。気付かぬうちに削除しちゃってたみたいです。

# views/layouts/application.html.erb
= javascript_include_tag 'application'

なお、どうやらこの部分で必要なjavascriptを読み込んでいるようです。

# app/assets/javascripts/application.js
//= require jquery
//= require jquery_ujs

参考

Delete link sends “Get” instead of “Delete” in Rails 3 view

32
36
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
36