如何在Ruby中搜索已定义常量?查找含AjaxDatatablesRails的常量
查找包含"AjaxDatatablesRails"的已定义常量
要找出所有名称里包含"AjaxDatatablesRails"的已定义常量,你可以试试这两种方法:
遍历所有模块/类筛选:
用ObjectSpace遍历当前Ruby环境中所有的模块对象,筛选出名称匹配的:ObjectSpace.each_object(Module).select { |mod| mod.name.to_s.include?("AjaxDatatablesRails") }执行后会返回一个数组,里面是符合条件的模块或类对象。
筛选顶层常量:
如果你只关心顶层命名空间下的相关常量,可以这样写:Object.constants.select { |c| c.to_s.include?("AjaxDatatablesRails") }.map { |c| Object.const_get(c) }
关于你遇到的
NameError问题 你执行::AjaxDatatablesRails::Extensions时报错未初始化常量,大概率是这几个原因:
gem未正确加载:
先确认你已经在项目里安装了ajax-datatables-railsgem(Rails项目要确保Gemfile里有这个依赖,并且运行过bundle install),然后需要先引入它:require 'ajax_datatables_rails'常量名称有误:
加载gem后,你可以先查看AjaxDatatablesRails模块下的所有已定义常量,确认是否存在Extensions:AjaxDatatablesRails.constants如果结果里没有
Extensions,要么是你记错了常量名,要么这个常量需要你自己去定义,并非gem自带的。
内容的提问来源于stack exchange,提问作者american-ninja-warrior
相关产品推荐
相关产品推荐

