Ruby Rails 3.1,designe签出方法不适用于等于designe_的命名空间

Ruby Rails 3.1,designe签出方法不适用于等于designe_的命名空间,ruby,ruby-on-rails-3,devise,Ruby,Ruby On Rails 3,Devise,在my Rails应用程序中,有以下routes.rb: devise_for :admin namespace :admin do root :to => 'dashboard#index' resources :customers end devise_for :admin, :sign_out_via => [ :get ] namespace :admin do root :to => 'dashboard#index'

在my Rails应用程序中,有以下routes.rb:

 devise_for :admin
 namespace :admin do
     root :to  => 'dashboard#index'
     resources :customers 
 end
devise_for :admin, :sign_out_via => [ :get ]
 namespace :admin do
     root :to  => 'dashboard#index'
     resources :customers 
 end
如果尝试使用链接“注销到('logout',销毁\u admin\u session\u path,:method=>:delete)”注销,但是 rails打印“没有与[GET]匹配的路由”/admin/sign\u


是否可以在不更改路由的情况下修复路由?

由于您请求删除并获得了一个GET,因此
:method
选项似乎不起作用。确保布局中有


您也可以阅读关于同一问题的此问题:

已通过为注销操作设置GET method(获取方法)解决,虽然不太安全,但可以正常工作。 如果任何人有相同的问题,这就是新路线。rb:

 devise_for :admin
 namespace :admin do
     root :to  => 'dashboard#index'
     resources :customers 
 end
devise_for :admin, :sign_out_via => [ :get ]
 namespace :admin do
     root :to  => 'dashboard#index'
     resources :customers 
 end

如果有人有更安全的补丁,欢迎使用

我知道这是一篇老文章,但我有同样的问题(不是使用Desive,而是一个自定义解决方案)

对我来说,在我的应用程序布局中(名为admin.html.erb,因为我有一个像你一样的管理员名称空间),我必须包含以下行,才能使用delete而不是get

<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
true%>

重要的是第一部分,我认为turbolinks根本帮不上这个错误。

检查application.html.erb文件的head部分是否有此代码,如果没有,请添加。对我有用

<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>

已通过更改“设计:管理员”中的“设计:管理员”行:通过=>[:获取]注销”解决问题PS:yep,默认javascript包括