我有带有活动管理员的Rails 5 API应用程序,可以正常工作。我在lib中创建了一个类,该类调用app_languages.rb并包含用于语言属性的哈希数组。我想共享活动管理资源中的数据并使用它,但是它不起作用。我尝试编写require'/lib/app_languages.rb',但是它不起作用,并且出现此错误:cannot load such file -- /lib/app_languages.rb
这是app_languages.rb:
class AppLanguages
keys = [:language, :flag]
values = ["English", "EN", "French", "FR", "Spanish", "SP", "Japanese", "JPN", "Hebrew", "HEB"]
LANG = values.each_slice(2).map { |value| Hash[keys.zip(value)] }
end
如何从活动管理员的资源中访问app_languages.rb的变量?
编辑:我读到Rails 5中存在自动加载问题,因此我已经在application.rb中进行了配置:config.autoload_paths << "#{Rails.root}/lib"
并在每个环境中进行配置:config.eager_load = true
答案 0 :(得分:0)
module AppLanguages
。KEYS
VALUES
LANG
。ActiveAdmin.send(:include, AppLanguages)
(或者,如果不是ActiveAdmin,则要扩展的模块)。我建议使用此方法,因为您不必在ActiveAdmin本身中的任何地方都需要它,因为代码会保留在您的应用程序中。此外,如果模块中的某些内容出现故障(在这里不太可能发生),则更容易找到代码源。