没有路线匹配[DELETE]" / signout"

时间:2014-09-05 13:52:56

标签: ruby-on-rails

我试图弄清楚为什么我的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'

我猜它与我创建链接的方式有关。我尝试了其他一些变化,但它们似乎都抛出同样的错误。我知道哪里出错了?

2 个答案:

答案 0 :(得分:3)

您应该通过delete HTTP方式而不是get访问您的注销路径:

match '/signout', to: 'sessions#destroy', via: 'delete'

答案 1 :(得分:1)

从链接中删除method: "delete": -

<%= link_to "Sign out", signout_path %>