我试图将我的 Rails 项目拆分为普通用户的前端和管理员的后端。因此,我创建了一个命名空间“admin”,以便我可以在地图管理中轻松控制管理特定的控制器方法/布局/身份验证。
我仅使用 Devise 来注册/验证我的管理员。因为它仅用于管理员,所以我尝试将 Devise 移动到管理命名空间。
我在 中找不到我想要的确切内容文档 https://github.com/plataformatec/deviseDevise 的但我在 paths.rb 中尝试了类似的方法:
namespace 'admin'do
devise_for :admins
end
我还尝试制作一个自定义 Devise::Sessions 控制器,但这似乎也没有成功。
有谁知道如何做到这一点?我应该使用常规路线来设计自定义(管理)布局吗?
简单地将 Devise“移动”到管理命名空间是错误的。 Devise 使用类似的控制器Devise::SessionsController
并且不能“移动”。
我通常创建自己的控制器并从 Devise 继承它们:
class Admin::SessionsController < ::Devise::SessionsController
layout "admin"
# the rest is inherited, so it should work
end
并将其配置在config/routes.rb
:
devise_for :admins, :controllers => { :sessions => "admin/sessions" }
Or您只能通过使布局变得更复杂来更改布局:
class ApplicationController < ActionController::Base
layout :layout
private
def layout
if devise_controller? && devise_mapping.name == :admin
"admin"
else
"application"
end
end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)