首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails中的命名空间ApplicationController

Rails中的命名空间ApplicationController
EN

Stack Overflow用户
提问于 2011-01-21 14:55:03
回答 2查看 2.9K关注 0票数 4

我有一个常规的ApplicationController类&我有一个Admin::ApplicationController类。问题是Admin::ApplicationController似乎没有被加载或执行。我不允许有一个命名空间的应用程序控制器吗?想要拥有它的理由是,这样我就可以使用CanCan检查用户是否是管理员,如果不是,则将他们重定向出来。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-21 14:58:19

将此控制器称为Admin::BaseController,因为它更多地充当名称空间的基础,而不是为应用程序做任何事情。为了让它完成您想要做的事情,您需要使所有管理名称空间的控制器都继承自此控制器。

票数 5
EN

Stack Overflow用户

发布于 2011-01-21 15:08:39

我见过的唯一一次这样的命名空间是当控制器嵌套在一个子文件夹中时。因此,Admin::ApplicationController应该位于controllers/admin/application_controller er.rb中

一种可能的解决方案是:

如果您希望除主页之外的所有内容都将它们踢出去,只需在您的应用程序控制器上设置一个before_filter,并为主页/索引设置一个例外,如下所示:

ApplicationController.rb

代码语言:javascript
复制
before_filter :authorize_admin

def authorize_admin
   //dostuff
end

HomeController.rb

代码语言:javascript
复制
skip_before_filter :authorize_admin, :only => ['index']

其中index是您要跳过的操作。关闭only以跳过整个控制器的过滤器。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4756201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档