Rails 5: включить несвязанный класс в ресурс активного администратора - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть приложение Rails 5 API с активным администратором, которое работает нормально.Я создал класс в lib, который вызывает app_languages.rb и содержит массив хэшей для языковых свойств.Я хочу поделиться данными в моих активных ресурсах администратора и использовать их, но это не работает.Я пытался написать требуют /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

1 Ответ

0 голосов
/ 13 декабря 2018
  • Сначала я изменил бы это с класса на модуль: module AppLanguages.
  • Затем изменил бы все 3 элемента на константы.KEYS VALUES LANG.
  • В нижней части файла добавьте ActiveAdmin.send(:include, AppLanguages) (или какой модуль вы хотите, чтобы расширения, если не ActiveAdmin).
  • Наконец, либовключите его в автозагрузку или создайте инициализатор, чтобы потребовать его.

Я рекомендую этот метод, потому что он не требуется нигде в самом ActiveAdmin, код остается в вашем приложении.Кроме того, если что-то в модуле сломается (по общему признанию, вряд ли здесь), будет легче найти источник кода.

...