如何在View Component中引入所有用户自定义Helper文件?
在View Component中引入所有自定义Helper的方法
现有代码:
class ApplicationViewComponent < ViewComponent::Base include ApplicationHelper end class FooComponent < ApplicationViewComponent end
针对你提出的「在已引入ApplicationHelper的基础上,把所有用户创建的Helper文件都引入到View Component中」的需求,提供以下几种可行方案:
方案1:直接引入Rails全局Helpers模块
Rails的ActionView::Helpers模块包含了所有已加载的helper方法(包括你自定义的所有helper),直接在基类里引入它就能一步到位:
class ApplicationViewComponent < ViewComponent::Base include ActionView::Helpers end
之后所有继承自ApplicationViewComponent的组件(比如FooComponent)都能直接调用所有自定义helper里的方法。
方案2:自动加载app/helpers下的所有自定义Helper
如果你的自定义helper都放在标准的app/helpers目录下,可以通过动态遍历文件的方式批量引入:
class ApplicationViewComponent < ViewComponent::Base include ApplicationHelper # 遍历app/helpers下所有rb文件,引入对应的Helper模块 Dir[Rails.root.join('app/helpers/**/*.rb')].each do |file| helper_module = File.basename(file, '.rb').camelize.constantize # 跳过已经引入的ApplicationHelper include helper_module unless helper_module == ApplicationHelper end end
方案3:按需引入特定分组的Helper
如果不需要引入所有helper,只想加载某一类(比如所有管理后台相关的),可以调整遍历规则:
class ApplicationViewComponent < ViewComponent::Base include ApplicationHelper # 只引入以admin_开头的Helper文件 Dir[Rails.root.join('app/helpers/admin_*.rb')].each do |file| helper_module = File.basename(file, '.rb').camelize.constantize include helper_module end end
内容的提问来源于stack exchange,提问作者user1989289
相关产品推荐
相关产品推荐

