Ruby on rails 销毁用户会话不';我不在设计中工作

Ruby on rails 销毁用户会话不';我不在设计中工作,ruby-on-rails,devise,httpverbs,Ruby On Rails,Devise,Httpverbs,我使用的是rails 3.1.3和Desive 1.5.3,当我在布局文件中添加destroy\u user\u session\u path时,链接不起作用。我可以很好地登录,但单击此路径时会出现以下错误: No route matches [GET] "/users/sign_out" 但是,如果我运行rake路由,我会看到下面列出的路由: destroy_user_session DELETE /users/sign_out(.:format) {:action=>"destroy

我使用的是rails 3.1.3和Desive 1.5.3,当我在布局文件中添加
destroy\u user\u session\u path
时,链接不起作用。我可以很好地登录,但单击此路径时会出现以下错误:

No route matches [GET] "/users/sign_out"
但是,如果我运行rake路由,我会看到下面列出的路由:

destroy_user_session DELETE /users/sign_out(.:format)
{:action=>"destroy", :controller=>"devise/sessions"}

因此,路由显然使用了DELETE动词。我可以通过添加
:method=>:delete
获得工作路径,但为什么我必须这样做?路由已经存在并且配置为删除,那么有什么事吗?

rake routes
显示应用程序将响应的路由。由您来确保生成的链接符合服务器的期望
link\u to
不会检查根据路由允许哪些谓词-它希望您提供正确的谓词。

rake routes
显示应用程序将响应哪些路由。由您来确保生成的链接符合服务器的期望
link\u to
不会检查根据路由允许哪些谓词-它希望您提供正确的谓词。

但是,路由是使用designe\u for:users设置的,因此将路由定义为使用DELETE,就像我使用了resources:users一样,那么为什么路由设置不起作用呢?我已经看到很多使用Desive的例子,它们不需要提供动词…默认的动词
link\u to
GET
。因此,如果服务器需要一个
GET
,那么不需要在
link\u to
中添加显式动词。有时,路由也被配置为匹配任何谓词,因此在这些情况下,您也不需要添加显式谓词。碰巧(正如您在运行
rake routes
时所注意到的那样),在这种情况下,designe已经配置了路由,以便服务器只匹配
DELETE
。因此,您需要
link_to
来使用
DELETE
动词。好的,这很有意义。谢谢你的信息!代码示例::delete%>但是,路由是使用designe_for:users设置的,因此它将路由定义为使用delete,就像我使用resources:users一样,那么为什么路由的设置不起作用呢?我已经看到很多使用Desive的例子,它们不需要提供动词…默认的动词
link\u to
GET
。因此,如果服务器需要一个
GET
,那么不需要在
link\u to
中添加显式动词。有时,路由也被配置为匹配任何谓词,因此在这些情况下,您也不需要添加显式谓词。碰巧(正如您在运行
rake routes
时所注意到的那样),在这种情况下,designe已经配置了路由,以便服务器只匹配
DELETE
。因此,您需要
link_to
来使用
DELETE
动词。好的,这很有意义。谢谢你的信息!代码示例::删除%>