【发布时间】:2012-01-30 23:14:17
【问题描述】:
在rails中,我可以通过controller_name获取当前控制器的名称,通过调用action_name获取当前动作。我正在寻找类似的运行时反射来获取以下内容:
- 应用程序中所有控制器的列表。
- 给定控制器中所有操作的列表。
例如,我是一个具有“添加”和“编辑”操作的产品控制器。我可以以编程方式提取这些操作的名称以向用户显示支持哪些操作吗?
我查看了一个需要使用ActionController::Routing::Routes.named_routes.routes.each 的方法
但我无法让它发挥作用。使用时出现未初始化常量ActionDispatch::Routing::Routes 错误。
如果有任何好的教程或文档可以帮助我了解 Rails 的反射功能。我搜索了它,但我主要得到了与记录反射相关的活跃博客。我正在寻找可以让我在运行时获取有关控制器和操作/方法的信息的东西。
谢谢,
塔布雷兹
【问题讨论】:
-
您是在运行时还是在 rake 作业中执行此操作。运行时是一个坏主意。耙工作很容易做到这一点。
-
您的意思是“rake routes”吗?我在运行时寻找一些东西。我不需要 rake 路由输出的大量信息。我只需要控制器名称,我假设它必须作为集合提供。作为一个 Rails 的菜鸟,我只是不知道在运行时可以在 Rails 中访问哪些上下文对象。
-
在这里找到了类似的问题,stackoverflow.com/questions/1564278/…
-
@nkm:我已经检查过这个问题。它在一定程度上相似,但接受的答案与我正在寻找的信息不符。
标签: ruby-on-rails ruby-on-rails-3 reflection methods controller