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

dom*_*91c 5 ruby routes ruby-on-rails devise ruby-on-rails-5

为了让您了解我在做什么:我的主应用程序中有一个部分,我将其命名为“门户”路由 ( localhost:3000/portal)。我有两个设计模型,用户和客户端。客户端用户应该只能访问命名空间下的站点部分/portal。其他用户将邀请“客户”访问该站点,他们将获得指向其个人资料页面的链接localhost:3000/portal/clients/id

在门户路线下时,我希望使用不同的布局视图。所以我尝试Portal::ApplicationController在那里制作并设置布局(views/portal/portal_layout.html.erb)。当我不是在设计视图,但是当我在一个登录或注册视野范围内的这个工程portal/,设计使用其父控制器,主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
Run Code Online (Sandbox Code Playgroud)