Задать вопрос
alexfedoseev
@alexfedoseev
React & Rails Dev

Использование хелперов главного приложения в представлениях mountable engine

У меня есть mountable engine, который монтируется в главное приложение.
В главном приложении, непосредственно в ApplicationHelper есть очень простой хелпер edit_link(path): отдаешь ему url, он возвращает html-код ссылки.
У engine есть пара контроллеров с представлениями (интерфейсами), в которых я хочу использовать этот хелпер.

По умолчанию Rails мне этого сделать не даёт: я пробовал использовать и просто edit_link(path), и main_app.edit_link(path) (это работает с роутами, но не с хелперами).

Тогда я решил сделать так:
app/helpers/my_engine/application_helper.rb

module MyEngine
  module ApplicationHelper
    include ActionView::Helpers::ApplicationHelper
  end
end


Оно сработало, но. Когда я перезапустил dev-сервер, то при первом запросе к интерфейсу engine словил эксепшн:
uninitialized constant ActionView::Helpers::ApplicationHelper

Я сделал реквест к контроллеру главного приложения и вернулся к интерфейсу engine — оно снова работает. Снова перезапустил сервер и сделал первый запрос к интерфейсу engine — оно работает. И больше словить эксепшн uninitialized constant у меня не получается.

Хочется понять что это было и можно ли таким методом включать хелперы главного приложения в представления mountable engine.
  • Вопрос задан
  • 2558 просмотров
Подписаться 2 Оценить 1 комментарий
Решения вопроса 1
alexfedoseev
@alexfedoseev Автор вопроса
React & Rails Dev
В общем, вот так вроде заработало:

lib/my_engine/engine.rb (это внутри engine)
module MyEngine
  class Engine < ::Rails::Engine
    isolate_namespace MyEngine
    config.to_prepare do
      ApplicationController.helper(ActionView::Helpers::ApplicationHelper)
    end
  end
end


P.S. Тот include убил соответственно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
OTKLIK POWER Москва
от 80 000 до 150 000 ₽
от 6 000 до 8 000 $
Netwrk Буэнос-Айрес
от 5 000 до 7 500 $