在Rails 3.0中,如何得到项目中所有的控制器名称,还有控制器里的方法名
在Rails 3.0中,如何得到项目中所有的控制器名称,还有控制器里的方法名
2.X是可以的。3.0以后,方法变了,还没有找到。
[解决办法]
在google上查了一下午,也没查到相应的资料
但是每一个rails 3 程序,都有一个相应的 Rails::Application进行包裹(文件在config/application.rb
),所以应该在Rails::Application中有,但是用irb查了一下午也没有收获
倒是有一个比较土的方法, 代码如下:
controllers = {}
con_classes = ObjectSpace.each_object(Class).select {|cls| cls.ancestors[1..-1].include?(ApplicationController) }
con_classes.each do |cls|
controllers[cls.name.to_sym] = cls.public_instance_methods(false)
end
但是有点问题:
这段代码在开发模式下,只能获得当前控制器,而在产品模式下是正常的