如何使用方法的完整路径在Ruby中调用模块方法?
示例 - Rails的ActionView
提供translate
辅助方法(see here),提供i18n
翻译。
该方法显然位于模块路径ActionView::Helpers::TranslationHelper
下。我甚至可以确认translate
是该模块中的方法之一(从我的rails视图的上下文中调用)
> ActionView::Helpers::TranslationHelper.instance_methods
=> [:translate,
:t,
:localize,
:l,
:tag,
:content_tag,
...
但每当我用完整路径直接调用它时(仍然来自我的rails视图),我得到一个未定义的方法错误 -
> ActionView::Helpers::TranslationHelper::translate("foo")
NoMethodError: undefined method `translate' for ActionView::Helpers::TranslationHelper:Module
from (pry):15:in `_app_views_log_ins_show_html_erb__4260732925355773979_2249797460'
编辑:我知道我可以直接调用translate
,因为该模块已包含在内。问题的核心是我理论上如何通过它的完整模块路径来引用它