为了让您了解我正在处理的内容:我在主应用程序中有一个部分,我在“门户”路由(localhost:3000/portal
)中命名。我有两个Devise模型,User和Client。客户端用户应该只能访问/portal
下名称空间的网站部分。其他用户将邀请“客户”访问该网站,该网站将获得指向其个人资料页面localhost:3000/portal/clients/id
的链接。
在门户网站路径下,我想要使用不同的布局视图。所以我尝试制作一个Portal::ApplicationController
并在那里设置布局(views / portal / portal_layout.html.erb)。这在我不在Devise视图中时有效,但当我在portal/
内登录或注册视图时,Devise使用其父控制器,主ApplicationController
。此值在Devise初始值设定项中设置,因此我无法根据用户是否在门户路由下进行动态设置。
是否有一个解决方案可以让Devise使用正确的ApplicationController
作为其父控制器依赖于当前路径,还是有另一种方法可以为站点的某个部分设置单独的布局在 localhost:3000/portal
?
如果您需要更多信息,请告诉我,因为我发现这有点难以解释。我现在就把路线留给你。
namespace :portal do
devise_for :clients, controllers: {
sessions: 'portal/clients/sessions',
registrations: 'portal/clients/registrations'
}
authenticate :client do
root to: 'dashboards#index'
end
end