haranatsumi1 / Korean_trip

0 stars 0 forks source link

質問 #19

Open haranatsumi1 opened 8 months ago

haranatsumi1 commented 8 months ago

ログアウト機能の実装がうまくいかず、質問させていただきます。

ヘッダーのログアウトボタンのリンクをこちらのコードで書いています。 <%= link_to "ログアウト", destroy_user_session_path, method: :delete, class: "mr-5 hover:text-gray-100" %>

ルーティングエラーになったのでrails routesコマンドでpathを確認、routes.rbを何度も確認しましたが特に問題はなさそうでした。 以下設定したルーティングです。 devise_scope :user do get "sign_in", :to => "users/sessions#new" delete "sign_out", :to => "users/sessions#destroy" end

ブラウザのネットワークタブでリクエストが正しく送信されているかを確認してみると、DELETEメソッドで/users/sign_outにリクエストが送信されるはずがGETメソッドになっており、修正できそうなところはしましたが改善できません。

さらに調べていくと、JavaScriptが無効になっている場合や、Turbolinksの影響を受けている可能性があるかもしれないとのことだったので

<%= link_to "ログアウト", destroy_user_session_path, method: :delete, class: "mr-5 hover:text-gray-100", data: { turbolinks: false } %>

に変更してみたり、application.jsのファイル内容を確認しましたがやはりRouting Errorになってしまいます。

Tsuchiya2 commented 8 months ago

deviseがRails7系に対応していたか記憶が不鮮明ですが...

Rails7系の際にmethod: :deleteの書き方、destroyアクション時のリダイレクトの書き方など、Rails6系の書き方と異なるかと思うので調べてみてください。またdevise公式ドキュメントにヒントがあるかもしれませんので調べてみてください。

haranatsumi1 commented 8 months ago

夜遅くにありがとうございます!!

調べてみます!!!