`
sxysxy
  • 浏览: 216724 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

获取所有Controller和Action

 
阅读更多

最近在做一个基于Controller加Action的权限管理插件,需要得到应用中的所有Controller作为一个列表供用户选择,这可以通过ApplicationController.subclasses得到,但是Rails在启动时并不会自动加载所有Controller,而是当请求到达时,根据路由来决定应该加载那个Controller,因此要使用ApplicationController.subclasses,就必须先require所有的Controller:


def require_all_controllers(path)
Dir.new(path).entries.collect
do |e|
controller_path = File.join(path, e)
if e[0] != 46 # 46 = '.'
if File.directory?(controller_path)
require_all_controllers(controller_path)
elsif e =~ /controller.rb$/
ApplicationController.require_or_load controller_path
end
end
end
end

require_all_controllers将加载指定目录下的所有以controller.rb结束的文件,你也可以选择将结果缓存起来,这样就不需要每次都重新require了:


@@all_controllers = nil
def get_all_controllers
require_all_controllers("#{RAILS_ROOT}/app/controllers") unless @@all_controllers
@@all_controllers ||= ApplicationController.subclasses
end

至于Action,可以直接调用Controller的action_methods方法得到。

分享到:
评论

相关推荐

    ASP.NET实现MVC中获取当前URL、controller及action的方法

    主要介绍了ASP.NET实现MVC中获取当前URL、controller及action的方法,结合实例形式分析了asp.net mvc获取当前URL、controller及action的具体实现技巧,需要的朋友可以参考下

    springboot2 配置多个DispatcherServlet 处理.do .htm请求,Controller分离,集成druid和mybatis

    Controller分离不会出现一个Controller可以处理.do也处理.htm可自己扩展.action .json等,适合分离前台会员,后台管理系统的Controller,也可扩展api请求,后缀让请求一目了然,集成 druid和mybatis。带Mysql数据库...

    Yii框架获取当前controlle和action对应id的方法

    本文实例讲述了Yii框架获取当前controlle和action对应id的方法。分享给大家供大家参考。具体方法如下: 在Yiii框架开发中,你可能会要获取当前controlle或action的id,其实很简单,一句代码就实现了,以下是分别在...

    Yii2使用$this-context获取当前的Module、Controller(控制器)、Action等

    使用Yii2的时候,在某些场景和环境下需要获得Yii2目前所处于的module(模型)、Controller(控制器)、Action(方法),以及会调用控制器里面已经定义过的一些公共的方法等.对于这些问题Yii2可以在视图层View中使用$this->...

    详解ASP.NET MVC下的异步Action的定义和执行原理

    Visual Studio提供的Controller创建向导默认为我们创建一个继承自抽象类Controller的Controller类型,这样的Controller只能定义同步Action方法。如果我们需要定义异步Action方法,必须继承抽象类AsyncController。这...

    Yii2使用$this->context获取当前的Module、Controller(控制器)、Action等

    使用Yii2的时候,在某些场景和环境下需要获得Yii2目前所处于的module(模型)、Controller(控制器)、Action(方法),以及会调用控制器里面已经定义过的一些公共的方法等.对于这些问题Yii2可以在视图层View中使用$this->...

    asp.net Core Post Json方式给控制器Action传参并拦截丢失参数等错误信息

    原生asp.net不支持通过json提交 方式给控制器的Action传参数,本程序通过给自定义输入字符串格式方法。在action的传参上加入FromJsonKey属性即可在传入的json中传入参数,如果传入的json中不存在相应键即报错 ...

    initphp_3.6.zip_Action!

    InitPHP采用了分层体系架构,在...2. 修改框架默认Module,Controller,Action逻辑,如果参数不存在则返回404错误页 3. 修改获取IP地址的函数BUG 4. 新增验证码增强类 5. ajax_return 添加json和xml的HTTP Content-type

    ASP.NET Core中的Action的返回值类型实现

    在Asp.net Core之前所有的Action返回值都是ActionResult,Json(),File()等方法返回的都是ActionResult的子类。并且Core把MVC跟WebApi合并之后Action的返回值体系也有了很大的变化。 ActionResult类 ...

    ASP.NET Core对Controller进行单元测试的完整步骤

    前言 单元测试对我们的代码质量非常重要。很多同学都会对业务逻辑或者工具方法写测试用例,但是往往忽略了对Controller层写单元测试。...根据用户id去获取用户信息然后展示出来。下面看看如何对这个Action进行测试。

    ASP.NETCORE教程—附源码

    {Domain}/{Controller}/{Action} 数据形式 QueryString: ?name=zhangsan&age=22 Form Cookie Session Header HttpRequest HttpRequest 是⽤户请求对象 提供获取请求数据的属性 Cookies,Headers,Query,QueryString,...

    java命名规范 开发规范

    d. 开发Service接口和Service接口实现,并在Action中通过set方法注入该Service; 接口文件:UserService 接口实现:UserServiceImpl 注入Service e. 开发DAO,DAO继承com.hikvision.xxx.HibernateBaseDAO; 示例 f...

    zend framework框架中url大小写问题解决方法

    有用过Zend Framework框架开发过项目的网友都知道 Zend Framework (ZF) MVC中的Controller和Action名称默认是不支持大小写的,这对于已经习惯了驼峰式代码风格的开发人员来说,显然是难以接受的。还好可以设定前端...

    外文翻译 stus MVC

    The Controller looks at the incoming event and dispatches the request to an Action class. The struts-config.xml determines what Action class the Controller calls. The struts-config.xml configuration ...

    编写轻量ajax组件第三篇实现

    实际上这和asp.net mvc框架的核心思想很类似,它会解析url,从中获取controller和action名称,然后激活controller对象,从请求获取action参数并执action。在web form平台上,我们把方法写在.aspx.cs中,要实现的就是...

    【C#/Web】最新鲜的Web应用权限管理设计

    对Web应用请求进行深度分析,发现不管是页面请求还是ajax请求,只要在后端Controller的Action上设置权限检查关口即可进行精准权限管控。相应的设计思路应运而生。结合反射自动生成权限列表。借助授权过程检查,自动...

    Struts原理、开发及项目实施

    Action通常称之为ActionBean,获取从ActionSevlet传来的FormBean,取出FormBean中的相关信息,并做出相关的处理,一般是调用Java Bean或EJB等。 流程:在Struts中,用户的请求一般以*.do作为请求服务名,所有的...

    Struts in Action中文版

    2.6.2. Struts的强项........................................................................................................58 Struts in Action 中文版 Lastest Revised:10/14/2005 10:27:00 AM ...

    谷歌开源的容器集群管理系统Kubernetes.zip

    3.1.4. Controller Registry Controller Registry负责跟踪Kubernetes集群中所有的Replication Controller,Replication Controller维护着指定数量的pod 副本(replicas)拷贝,如果其中的一个容器死掉,Replication ...

Global site tag (gtag.js) - Google Analytics