Routing 收到警告:Can';t从Rails 3.0.2升级到3.1后,验证CSRF令牌的真实性

Routing 收到警告:Can';t从Rails 3.0.2升级到3.1后,验证CSRF令牌的真实性,routing,ruby-on-rails-3.1,csrf,authenticity-token,Routing,Ruby On Rails 3.1,Csrf,Authenticity Token,搜索了一段时间后,常见的解决方案是插入布局标题。然而,这没有什么区别。安装jquery rails也没有帮助 Rails 3.1.0 Ruby 1.9.2 Mongoid 2.2.0 来到3.1之后,另一件奇怪的事情是,当我通过rake routes检查路由时,有一些url不是由url帮助程序指定的,比如GET、PUT和DELETE具有相同的url,但只有帮助程序定义的url可以到达第一个cat edit_message GET/:permalink/messages/:id/edit(:for

搜索了一段时间后,常见的解决方案是插入布局标题。然而,这没有什么区别。安装jquery rails也没有帮助

Rails 3.1.0 Ruby 1.9.2 Mongoid 2.2.0

来到3.1之后,另一件奇怪的事情是,当我通过rake routes检查路由时,有一些url不是由url帮助程序指定的,比如GET、PUT和DELETE具有相同的url,但只有帮助程序定义的url可以到达第一个cat

edit_message GET/:permalink/messages/:id/edit(:format){:action=>“edit”,:controller=>“messages”}

message GET/:permalink/messages/:id(:format){:action=>“show”,:controller=>“messages”}


问题的前半部分是通过向每个ajax请求添加令牌来解决的。因为从Rails 3.0.4(如果我记得的话)开始,Rails要求每个ajax请求都带有真实性令牌,如果您将protect_from_伪造放在您的应用程序控制器中。

要从Rails 3.0.2更新到3.1,您应该首先升级到Rails 3.0.10,这将帮助您修复不推荐的内容,但事实上,我不认为这适用于你的情况。事实上,这些问题甚至在3.0.10中也被发现了
         PUT    /:permalink/messages/:id(.:format)  {:action=>"update", :controller=>"messages"}

         DELETE /:permalink/messages/:id(.:format) {:action=>"destroy", :controller=>"messages"}