在我的Rails应用程序中,我在app/controllers/admin
中有一个AdminController:
module Admin
class AdminController < ApplicationController
end
end
然后在admin文件夹中我有各种其他控制器,它们都从AdminController继承,例如
module Admin
class PermissionsController < AdminController
end
end
我试图列出AdminController下的所有控制器和操作:
def list
@controllers = AdminController.descendants
end
但我得到的是:Admin::PermissionsController
我也试过AdminController.subclasses
但是也一样。
我不想@controllers = Dir.new("#{Rails.root}/app/controllers/admin").entries
,因为我也想访问action_methods
。
为什么没有descendants
或subclasses
工作?
在我看来,我想这样做:
<% @controllers.each do |controller| %>
<h2><%= controller %></h2>
<ul>
<% controller.action_methods.each do |action| %>
<li><%= action %></li>
<% end %>
</ul>
<% end %>
列出了所有操作但仅针对当前控制器,它还列出了父控制器的操作方法。我只想列出每个控制器的那些。