我已经用Devise gem创建了一个Admin
模型。现在,使用Devise控制器生成器,我有一个app/controllers/admins
文件夹,其中包含我选择时可以修改的所有库存控制器,例如sessions_controller
,passwords_controller
等。
但是,我不知道如何获得Admin
控制器和简单的admin
路由,例如admin_path
或new_admin_path
。
这是我的rake routes | grep admin
new_admin_session GET /admin/sign_in(.:format) admins/sessions#new
admin_session POST /admin/sign_in(.:format) admins/sessions#create
destroy_admin_session DELETE /admin/sign_out(.:format) admins/sessions#destroy
new_admin_password GET /admin/password/new(.:format) devise/passwords#new
edit_admin_password GET /admin/password/edit(.:format) devise/passwords#edit
admin_password PATCH /admin/password(.:format) devise/passwords#update
PUT /admin/password(.:format) devise/passwords#update
POST /admin/password(.:format) devise/passwords#create
admin_root GET /admin(.:format) admins/sessions#portal
admin_sign_out GET /admin/sign_out(.:format) admin/sessions#destroy
这是我的routes.rb
devise_for :admins, path: 'admin', controllers: { sessions: 'admins/sessions' }
devise_scope :admin do
get "/admin", to: 'admins/sessions#portal', as: 'admin_root'
get "/admin/sign_out", to: 'admin/sessions#destroy', as: 'admin_sign_out'
end
您会看到portal
中目前有一个Admin::SessionsController
方法,这是我目前的解决方法。我知道该页面的正确位置在AdminsController
中,但我不知道如何进行设置。
在admins: 'admins/admins'
块中添加devise_for :admins, controllers:
并没有给我任何新的路线。我尝试添加带有方法的AdminsController
,但这也无济于事,尝试转到/admin/new
或/admins/new
说没有路由匹配。
答案 0 :(得分:0)
这就是我设置设备和名称空间的方式
# config/routes.rb
Rails.application.routes.draw do
devise_for :admins, :controllers => { registrations: 'admins/registrations',
sessions: 'admins/sessions',
passwords: 'admins/passwords',
confirmations: 'admins/confirmations'
}
authenticate :admin do
namespace :admins do
...
root 'dashboards#index'
end
end
...
root 'pages#index'
现在控制器也很重要。
#app/controllers/admin_controller.rb
class AdminController < ApplicationController
layout 'admins/application'
before_filter :authenticate_admin!
end
我将它们设置为Devise控制器
#app/controllers/admins/sessions_controller.rb
class Admins::SessionsController < Devise::SessionsController
layout 'admins/application'
...
end
对所有其他设备控制器重复此过程
让我知道这是否对您有帮助