两个具有不同父控制器和布局的Devise模型 - Rails 5

时间:2017-04-06 23:43:18

标签: ruby-on-rails ruby devise routes ruby-on-rails-5

为了让您了解我正在处理的内容:我在主应用程序中有一个部分,我在“门户”路由(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

0 个答案:

没有答案