我有一个常规的ApplicationController类&我有一个Admin::ApplicationController类。问题是Admin::ApplicationController似乎没有被加载或执行。我不允许有一个命名空间的应用程序控制器吗?想要拥有它的理由是,这样我就可以使用CanCan检查用户是否是管理员,如果不是,则将他们重定向出来。
发布于 2011-01-21 14:58:19
将此控制器称为Admin::BaseController,因为它更多地充当名称空间的基础,而不是为应用程序做任何事情。为了让它完成您想要做的事情,您需要使所有管理名称空间的控制器都继承自此控制器。
发布于 2011-01-21 15:08:39
我见过的唯一一次这样的命名空间是当控制器嵌套在一个子文件夹中时。因此,Admin::ApplicationController应该位于controllers/admin/application_controller er.rb中
一种可能的解决方案是:
如果您希望除主页之外的所有内容都将它们踢出去,只需在您的应用程序控制器上设置一个before_filter,并为主页/索引设置一个例外,如下所示:
ApplicationController.rb
before_filter :authorize_admin
def authorize_admin
//dostuff
endHomeController.rb
skip_before_filter :authorize_admin, :only => ['index']其中index是您要跳过的操作。关闭only以跳过整个控制器的过滤器。
https://stackoverflow.com/questions/4756201
复制相似问题