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

问题描述

退出设计时出现此问题:

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 end

谁能帮我理解这里的问题是什么?我有点坚持这一点,并在谷歌上搜索了一段时间,但把它放在了次要位置。提前致谢。

标签: ruby-on-railsdevise

解决方案


换行:

 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 

推荐阅读