У меня есть
mountable engine, который монтируется в главное приложение.
В главном приложении, непосредственно в
ApplicationHelper
есть очень простой хелпер
edit_link(path)
: отдаешь ему url, он возвращает html-код ссылки.
У engine есть пара контроллеров с представлениями (интерфейсами), в которых я хочу использовать этот хелпер.
По умолчанию Rails мне этого сделать не даёт: я пробовал использовать и просто
edit_link(path)
, и
main_app.edit_link(path)
(это работает с роутами, но не с хелперами).
Тогда я решил сделать так:
app/helpers/my_engine/application_helper.rbmodule MyEngine
module ApplicationHelper
include ActionView::Helpers::ApplicationHelper
end
end
Оно сработало, но. Когда я перезапустил dev-сервер, то при первом запросе к интерфейсу engine словил эксепшн:
uninitialized constant ActionView::Helpers::ApplicationHelper
Я сделал реквест к контроллеру главного приложения и вернулся к интерфейсу engine — оно снова работает. Снова перезапустил сервер и сделал первый запрос к интерфейсу engine — оно работает. И больше словить эксепшн
uninitialized constant
у меня не получается.
Хочется понять что это было и можно ли таким методом включать хелперы главного приложения в представления mountable engine.