我正在try 将我的rails项目分为面向普通用户的前端和面向管理员的后端.因此,我创建了一个名称空间"admin",以便在map admin中轻松控制特定于管理员的控制器方法/布局/身份验证.

我使用Desive只注册/验证我的管理员.因为它只用于管理员,所以我try 将designe移到管理员名称空间.

我在Desive的documentation中找不到我想要的东西,但我在routes中try 了类似的东西.rb:

namespace 'admin'do 
  devise_for :admins
end

我还试着做一个定制的Desive::Sessions控制器,但似乎也没有成功.

有人知道怎么做吗?我应该只使用常规路由来定制(管理)布局吗?

推荐答案

简单地将design"移动"到管理名称空间是错误的.Deave使用像Devise::SessionsController这样的控制器,不能"移动".

我通常创建自己的控制器,并从Deave继承它们:

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

Ruby-on-rails相关问答推荐

Data-turbo-stream=&FALSE&QOOT;不适用于带有方法POST的表单

如何从 Rails7.2 中的控制器获取名称空间?

引用连接 Rails 表中枚举的查询

无法加载此类文件 -- mysql2/mysql2

骨干model.destroy()即使工作正常也会调用错误回调函数?

如何在 Ruby on Rails 中创建一个锚点并重定向到这个特定的锚点

设计:手动加密密码并直接存储

如何在两个日期之间生成随机日期和时间?

理解 Gemfile.lock:删除 Gemfile.lock 然后再次运行 bundle install 可以吗?

默认情况下,如何在 Rails 中使 cookie 安全(仅限 https)?

适合mysql比较的Ruby datetime

rmagick 和 OS X Lion

Rails:仅在创建时验证,或者当字段不为空时在更新时验证

Rails 3.0 中的 f.error_messages

如何检测我的代码是否在 Rails 3 的控制台中运行?

Rails 5:重命名表迁移

加载常量时自动加载常量时检测到循环依赖

Rails 控制台中手动更新属性值的验证问题

使用 PostgreSQL 的模式和 Rails 创建多租户应用程序

如何更改 Rails 3 控制器中视图文件的默认路径?