gpt4 book ai didi

ruby-on-rails - 如何在 ruby​​ on rails 中获取 Controller 和 Action 列表?

转载 作者:行者123 更新时间:2023-12-03 08:08:42 26 4
gpt4 key购买 nike

在 Rails 中,我可以通过 controller_name 获取当前 Controller 的名称,通过调用 action_name 获取当前操作。我正在寻找类似的运行时反射来获取以下内容:

  • 应用程序中所有 Controller 的列表。
  • 给定 Controller 中所有操作的列表。

  • 例如,我是一个具有“添加”和“编辑”操作的产品 Controller 。我可以以编程方式提取这些操作的名称以向用户显示支持哪些操作吗?

    我查看了一个需要使用 ActionController::Routing::Routes.named_routes.routes.each 的方法。
    但我无法让它发挥作用。我得到了未初始化的常量 ActionDispatch::Routing::Routes我用的时候报错。

    如果有任何好的教程或文档可以帮助我了解 rails 反射功能。我搜索了它,但我主要得到了与事件记录反射相关的博客。我正在寻找可以让我在运行时获取有关 Controller 和操作/方法的信息的东西。
    谢谢,

    塔布雷兹

    最佳答案

    获取 Controller 类列表的最简单方法是:

    ApplicationController.descendants

    但是,由于类是延迟加载的,因此在执行此操作之前,您需要预先加载所有类。请记住,此方法需要时间,并且会减慢您的启动速度:
    Rails.application.eager_load!

    要获取 Controller 中的所有操作,请使用 action_methods
    PostsController.action_methods

    这将返回 Set包含 Controller 中作为“ Action ”的所有方法的列表(使用与 Rails 用于确定方法是否是要路由到的有效 Action 相同的逻辑)的列表。

    关于ruby-on-rails - 如何在 ruby​​ on rails 中获取 Controller 和 Action 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8686441/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com