没有路由匹配 [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'
在我的会话控制器中,我有一个名为 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'