ruby-on-rails - 无法注销 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
谁能帮我理解这里的问题是什么?我有点坚持这一点,并在谷歌上搜索了一段时间,但把它放在了次要位置。提前致谢。
解决方案
换行:
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
推荐阅读
- java - 需要一些关于处理 Java 中许多字段的建议
- javascript - 节点/Multer | 无法根据字段名获取 sperarte 文件名
- android - 如何从 Android 中的 IP 地址获取设备名称?
- django - 我可以在 django 中有两个编辑配置文件表单一个是主要的编辑配置文件表单,一个是 2 个字段
- jquery - 如何在 jquery datepicker 中更改月份和年份选择器的字体颜色?
- telegram - 如何在没有类型命令的情况下自动响应机器人加入组的新成员
- tomcat - tomcat restart 追加到日志而不是覆盖日志
- flutter - 颤振小部件测试 - 如何执行“返回上一个屏幕”的测试
- apache-kafka - 如何使消息在所有分区上均匀分布
- java - 数据截断:不正确的日期时间值:'