2014-04-11 45 views
1

Noob在這裏使用Devise構建我的第一個Rails 4.0應用程序。使用標準的設計策略設置我的控制器和路線。無法使用Devise在Rails中銷燬會話

耙路線顯示:

destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy 

在我的導航,我的代碼是:

<%= link_to "Sign Out", destroy_user_session_path, method: :destroy, data: { confirm: 'Are you sure?' } %> 

我運行衛隊寶石,所以我的服務器始終開啓,所以我知道這不是一個我的路線和服務器不匹配。我仍然得到以下錯誤:

No route matches [POST] "https://stackoverflow.com/users/sign_out"

有什麼建議嗎?謝謝大家!

+0

如果您在啓動它之後添加了像設計師那樣的寶石,Guard將不會接受新的更改。你重新啓動了Guard嗎? – nickcoxdotme

回答

1

你可能需要將method(HTTP動詞)選項更改爲delete

<%= link_to "Sign Out", destroy_user_session_path, method: :delete, data: { confirm: 'Are you sure?' } %> 
+0

太棒了,謝謝。就是這樣! –

+0

在這種情況下,您應該接受答案,upvote對社區也很有用。別客氣! – markets

0

在配置/初始化/ devise.rb檢查並確保此設置:

config.sign_out_via = :delete

此外,在我看來,這工作得很好:

<%= link_to 'Logout', destroy_user_session_path, :method=>'delete' %>