无法注销Rails应用程序设计给出错误找不到路径“ / tuners / sign_out的设计映射”

时间:2019-11-30 16:31:37

标签: ruby-on-rails devise

登出设备时出现此问题:

Could not find devise mapping for path "/tuners/sign_out". This may happen for two reasons: 1) You forgot to wrap your route inside the scope block. For example: devise_scope :user do get "/some/route" => "some_devise_controller" end 2) You are testing a Devise controller bypassing the router. If so, you can explicitly tell Devise which mapping to use: @request.env["devise.mapping"] = Devise.mappings[:user]

我的路线文件

    Rails.application.routes.draw do


  devise_for :tuners 
  get '/tuners/sign_out' => 'devise/sessions#destroy'
  resources :hardy_pianos
  devise_for :admins
  resources :images
  resources :entries
  resources :models
  get '/clients/mail_room' => 'clients#mail_room'
  get '/clients/mail' => 'clients#mail'

  #list of clients to reschedule
  get '/clients/book_again' => 'clients#book_again'  
  # current upcoming jobs 
  get '/clients/current' => 'clients#current' 
  # reports 
  get '/clients/reports' => 'clients#reports' 
  resources :clients

  seems_rateable
  post '/rate' => 'rater#create', :as => 'rate'
  resources :technicians
  resources :members
  resources :admins


  resources :tuners
  get 'tuners/tuners_pianos'
  get 'pianos/tuners_pianos'

  resources :tuners
  resources :journals
  resources :expenses
  resources :interests
  resources :purchases
  resources :contacteds
  resources :pianos
  get '/pianos/work_needed' => 'pianos#work_needed'
  get '/invoices/work_needed' => 'invoices#work_needed'
  resources :invoices
  resources :pages
  #devise_for :installs
  resources :prosperities
  get '/finances/taxes' => 'finances#taxes'
  resources :posts
  get '/tunings/current' => 'tunings#current' # or match for older Rails versio
  get '/tunings/bookagain' => 'tunings#bookagain' # or match for older Rails version
  get '/tunings/bookagain12' => 'tunings#bookagain12'
  get '/tunings/reports' => 'tunings#reports'
  get '/tunings/information' => 'tunings#information'
  resources :tunings
  root 'pages#index'
  get '/' => 'tunings#current'

#有关此文件中可用DSL的详细信息,请参见http://guides.rubyonrails.org/routing.html 结束

有人可以帮助我了解这里的问题吗?我有点坚持,谷歌搜索了一段时间,但把它留在了后面。预先感谢。

1 个答案:

答案 0 :(得分:0)

替换行:

 get '/tuners/sign_out' => 'devise/sessions#destroy'

delete 'sign_out', to: 'devise/sessions#destroy'

或者您可以尝试这个。注意行的顺序。

 Rails.application.routes.draw do

devise_scope :tuners do
   get "sign_out", to: "devise/sessions#destroy"
end
  devise_for :tuners