我想同时从这个 gem 中覆盖我的设计路线和 session Controller 。我该怎么做呢 ?
我想过:
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
但我的路径正在改变,但 Controller - 不是。我怎样才能实现这个权利?
最佳答案
当您指定 controllers: { sessions: "admins/sessions" }
时,这意味着您有一个名为 sessions_controller.rb
的文件在此路径中:app/controllers/admins/sessions_controller.rb
,并且它以:
module Admins
class SessionsController < Devise::SessionsController
如果这是您希望应用程序使用的 Controller ,则在
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
关于ruby-on-rails - 设计 : overriding the devise routes and controllers at the same time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34888098/