我今天剛剛發現這個問題,因為我正在審查我的所有專案以及我發現的所有其他帖子似乎是關于 Rails 的早期版本或有我研究過的解決方案。
我正在嘗試注銷我的用戶并收到此錯誤No route matches [DELETE] "/users/sign_out"。
這是我的鏈接,
<%= link_to "Sign Out", destroy_user_session_path, method: :delete, :class => 'navbar-link' %>
我的路線,我也在使用omniauth 與第三方登錄。
devise_for :users, :controllers => { :omniauth_callbacks => "callbacks" }
這就是我所擁有的devise.rb
config.sign_out_via = :get
瀏覽器的控制臺日志給了我這個錯誤:
POST http://localhost:3000/users/sign_out 404 (Not Found)
Rails 日志向我展示了這一點:
Started DELETE "/users/sign_out" for ::1 at 2022-03-06 11:07:46 -0600
ActionController::RoutingError (No route matches [DELETE] "/users/sign_out"):
我還有什么需要檢查的嗎?請指教。
uj5u.com熱心網友回復:
更改config.sign_out_via = :get以config.sign_out_via = [:get, :delete]解決問題。
請參閱評論(再次感謝,最大)。我的建議是在做之前檢查 Rails UJS config.sign_out_via = :get,雖然它可能是一個解決方案。它會回來咬你(就像它剛剛和我一樣)。也許,檢查是否有新的 Rails UJS 版本或者資產清單中是否缺少它可能會更好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/442657.html
