我试图弄清楚为什么我的Signout链接无法正常销毁用户会话。
如果我手动导航到localhost:3000/signout
,它可以正常工作 - 破坏会话。但是,如果我点击我的注销链接,我会收到No route matches [DELETE] "/signout"
错误。
以下是我创建链接的方式:
<%= link_to "Sign out", signout_path, method: "delete" %>
html:
<a data-method="delete" href="/signout" rel="nofollow">Sign out</a>
我的路线档案:
SampleApp::Application.routes.draw do
resources :users
match '/signup', to: 'users#new', via: 'get'
resources :sessions, only: [:new, :create, :destroy]
match '/signin', to: 'sessions#new', via: 'get'
match '/signout', to: 'sessions#destroy', via: 'get'
我猜它与我创建链接的方式有关。我尝试了其他一些变化,但它们似乎都抛出同样的错误。我知道哪里出错了?
答案 0 :(得分:3)
您应该通过delete
HTTP方式而不是get
访问您的注销路径:
match '/signout', to: 'sessions#destroy', via: 'delete'
答案 1 :(得分:1)
从链接中删除method: "delete"
: -
<%= link_to "Sign out", signout_path %>