我想同时从这个gem中挖掘我的设计路线和会话控制器。我该怎么做?
我想到了:
devise_for :admins, :skip => [:sessions],
controllers: { sessions: "admins/sessions" }
devise_scope :admin do
get 'login' => 'devise/sessions#new', :as => :new_admin_session
post 'login' => 'devise/sessions#create', :as => :admin_session
delete 'logout' => 'devise/sessions#destroy', :as => :destroy_admin_session
end
但我的路径正在变化,但控制器 - 不是。我该如何实现这个权利?
答案 0 :(得分:1)
如下:
devise_for :admin, exclude: [:sessions] do
get '/login', to: 'sessions#new', as: :new_admin_session
post '/login', to: 'sessions#create', as: :admin_session
delete '/logout', to: 'sessions#destroy', as: :destroy_admin_session
end
答案 1 :(得分:1)
当您指定controllers: { sessions: "admins/sessions" }
时,这意味着您在此路径中有一个名为sessions_controller.rb
的文件:app/controllers/admins/sessions_controller.rb
,并且它始于:
module Admins
class SessionsController < Devise::SessionsController
如果这是您希望应用使用的控制器,那么在devise_scope
块中,您必须告诉它使用admins/sessions
,而不是devise/sessions
,如下所示:
devise_scope :admin do
get 'login' => 'admins/sessions#new', :as => :new_admin_session
post 'login' => 'admins/sessions#create', :as => :admin_session
delete 'logout' => 'admins/sessions#destroy', :as => :destroy_admin_session
end