没有路由匹配 [GET] "/logout"

No route matches [GET] "/logout"

在我的会话控制器中,我有一个名为 destroy 的方法,它在路由中指向 "Logout",它的功能只是将会话变量重置为 nil 并重定向到商店索引:

def destroy
session[:user_id] = nil
redirect_to store_url, notice: "Logged out"
end

在路由文件中我声明了指针:

get "sessions/destroy"

controller :sessions do
get  'login' => :new
post 'login' => :create
delete 'logout' => :destroy
end

现在在浏览器中我应该触发 HTTP DELETE VERB,但它采用 GET 并且找不到路由。

例如:

localhost:3000/logout,错误是No route matches [GET] "/logout"

在 link 你应该把显式的方法::destroy,像这样:

= link_to 'Destroy', session, method: :destroy

如果您在 config/initializers/devise.rb 中查看您的 Devise 初始值设定项并查找第 236 行并切换到 :get 如果您希望您的用户通过 GET 请求注销。

config.sign_out_via = :get

我有同样的错误..

这对我有用。

刚刚更改了路线从..

delete  'logout', to: 'sessions#destroy'
#to
get 'logout', to: 'sessions#destroy'