2014-09-05 62 views
0

我想弄清楚爲什麼我的退出鏈接不能正常銷燬用戶會話。沒有路線匹配[刪除]「/註銷」

如果我手動導航到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' 

我猜它與我怎麼辦創建我的鏈接。我已經嘗試了其他一些變體,但它們似乎都拋出了相同的錯誤。任何想法,我要去哪裏錯了?

回答

3

你應該讓你的signout路徑通過delete HTTP方法,而不是get訪問:

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

這完美的作品。 – 2014-09-05 14:03:28

1

從鏈接中刪除method: "delete": -

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

這有用,但我猜測Marek的答案可能是一條更好的路線,因爲它不應該通過get? – 2014-09-05 14:03:04