gpt4 book ai didi

ruby-on-rails - 设计/rails : No route matches [GET] "/users/sign_out"

转载 作者:行者123 更新时间:2023-12-04 09:07:13 24 4
gpt4 key购买 nike

我对设计如何路由我的请求感到有些困惑,出于某种原因,我现在无法进入我的应用程序中的注销路径:

ActionController::RoutingError (No route matches [GET] "/users/sign_out")

以下是与我的 User 模型和 Devise 相关的路线:
devise_for :users, :controllers => {:registrations => "registrations"}
devise_scope :user do
get '/settings' => 'registrations#edit'
end

定义该范围是否也会阻止我的其他路由工作?

更新

我不认为它应该是 GET请求,因为我的链接看起来像:
<%= link_to "Sign out", destroy_user_session_path, :method => :delete %>

最佳答案

如果您尝试通过在浏览器的地址栏中输入或正常链接来访问/users/sign_out,则会出现此错误。总结这里的一些评论和答案以及 github 上设计存储库中的问题:

这是预期的功能,RESTful 应用程序不应使用 GET 请求修改状态。

您可以通过创建一个使用@Trip、@fuzzyalej 和@Joseph Silvashy 提到的 DELETE 方法的链接来解决此问题。

或者,(不太推荐),在/config/initializers/devise.rb 中,您可以进行以下更改

config.sign_out_via = :delete


config.sign_out_via = :get

我在关注 http://railscasts.com/episodes/209-introducing-devise 时遇到了这个问题对于他在那里使用的旧版本设计,这不是问题。

关于ruby-on-rails - 设计/rails : No route matches [GET] "/users/sign_out",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9590598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com