在Rails中列出子控制器

时间:2017-01-18 11:33:29

标签: ruby-on-rails

在我的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

为什么没有descendantssubclasses工作?

在我看来,我想这样做:

<% @controllers.each do |controller| %>
    <h2><%= controller %></h2>
    <ul>
      <% controller.action_methods.each do |action| %>
          <li><%= action %></li>
      <% end %>
    </ul>
<% end %>

列出了所有操作但仅针对当前控制器,它还列出了父控制器的操作方法。我只想列出每个控制器的那些。

0 个答案:

没有答案