Хобрук: Ваш путь к мастерству в программировании

Используйте ApplicationHelper в lib/file.rb

У меня есть файл в lib/thing.rb, и там мне нужно вызвать метод, определенный в ApplicationHelper, внутри метода класса в thing.rb

Другими словами, в Thing.some_method() он вызывает format_me() в ApplicationHelper.

Я пробовал все мыслимые способы, которые я могу придумать, для extend ApplicationHelper или extend ActionView::Helpers::ApplicationHelper, и он просто продолжает говорить неинициализированная константа. Я также пробовал Rails.application.helpers, но я не знаю, как получить доступ к этому методу...


  • Я не могу воспроизвести это. Можете ли вы предоставить дополнительную информацию, например, когда вы это вызываете и как выглядит код? 26.05.2019
  • Я не полностью осведомлен о дерьме автозагрузки Rails, но я почти уверен, что старый добрый простой ruby ​​require_relative "../app/helpers/..." подойдет. 26.05.2019

Ответы:


1

Если вы получаете ошибки о неинициализированных константах, вы, вероятно, можете решить проблему, переместив lib/ в app/. Использование Ruby 2.6.3 и Rails 5.2.3 со следующими файлами и макетом:

# app/helpers/application_helper.rb
module ApplicationHelper
  def baz
    SecureRandom.uuid
  end
end

и:

# app/lib/foo.rb
class Foo
  extend ApplicationHelper

  def self.bar
    baz
  end
end

Вызов Foo.bar возвращает:

=> "b6322675-47b2-4ae8-a19a-ffd4af8d6f84"
26.05.2019
Новые материалы

Структуры данных в C ++ - Часть 1
Реализация общих структур данных в C ++ C ++ - это расширение языка программирования C, которое поддерживает создание классов, поэтому оно известно как C с классами . Он используется для..

Как я опубликовал свое первое приложение в App Store в 13 лет
Как все началось Все началось три года назад летом после моего четвертого класса в начальной школе. Для меня, четвертого класса, лето кажется бесконечным, пока оно не закончится, и мой отец..

Что в лицо
Очерк о возвращении физиогномики и о том, почему мы должны это приветствовать. История начинается со странной науки. Р. Тора Бьорнсдоттир, Николас О. Рул. Видимость социального класса по..

Почему шаблоны проектирования и почему нет?
Сложность — мать всех проблем в программировании. Программное обеспечение должно быть разработано с точки зрения того, кто его поддерживает, а не того, кто его пишет, потому что программное..

Создание дизайна обуви с помощью машинного обучения
Обувь. Что подождать? Я думал, что речь пойдет о машинном обучении! Ну это так. Если бы вы пошли на Amazon, сколько обуви вы бы нашли? Наверное, много, не так ли? Но много ли в них..

GraalVM в 2022 году: итоги года
2022 год был очень продуктивным для проекта и сообщества GraalVM. Вместе мы разработали множество новых функций, выпустили GraalVM для последних версий Java и новых платформ и увидели несколько..

Быстрая разработка: волшебный мир больших языковых моделей
РУКОВОДСТВО Быстрая разработка: волшебный мир больших языковых моделей Подход, основанный на данных, для получения наилучшего ответа Искусство и наука Можно ли совместить машинное..