我有我的常规ApplicationController类&我有一个Admin :: ApplicationController类。问题是Admin :: ApplicationController似乎没有被加载或执行或任何东西。我不允许有命名空间的应用程序控制器吗?想要拥有它的原因是我可以检查用户是否是CanCan&的管理员。如果不是,请将它们重定向。
答案 0 :(得分:5)
调用此控制器Admin::BaseController
,因为它更像是作为命名空间的基础,而不是为应用程序做任何事情。为了做你想做的事,你需要让所有管理员命名空间的控制器都从这个控制器继承。
答案 1 :(得分:2)
我见过命名空间的唯一一次是控制器嵌套在子文件夹中。所以Admin :: ApplicationController应该在controllers / admin / application_controller.rb
中一种可能的解决方案:
如果您希望除主页之外的所有内容都将其删除,只需在应用程序控制器上设置一个before_filter,但主页/索引除外:
ApplicationController.rb
before_filter :authorize_admin
def authorize_admin
//dostuff
end
HomeController.rb
skip_before_filter :authorize_admin, :only => ['index']
索引是您要跳过的操作。不要忘记跳过整个控制器的过滤器。