Основное приложение - это контейнер для нескольких двигателей. Одним из основных движков является приложение «приборной панели», которое будет предоставлять статистику, отчеты и т. Д. Из различных других движков. При рендеринге части других движков в панели управления я не могу получить доступ к маршрутам исходного движка.Рельсы Двигатель частично в другом двигателе не может получить доступ к маршрутам оригинального двигателя
Использование теста двигатель в качестве примера, он у меня и Dashboard двигатель, установленный следующим образом в route.rb файле моего главного приложения:
mount Test::Engine, :at => "/test", :as => "test"
mount Dashboard::Engine, :at => "/dashboard", :as => "dashboard"
В моем тесте двигатель у меня есть виджет в частичное что Я хочу использовать на приборной панели. В связи с панели мониторинга у меня есть:
<%= render :partial => "test/dashboard/test" %>
Виджет частичный код показывает вверх отлично и очень простой:
<h3>Test</h3>
Однако, если добавить что-то пытается получить доступ к одному из маршрутов Test, таких как:
<%= link_to "Root", test.root_path %>
Я получаю следующее сообщение об ошибке о том, что тест является ноль:
не определен метод «root_path» для ноль: NilClass
Если я двигаю link_to из виджета просмотра панели, он прекрасно работает. Если я удалю «тест» из link_to в виджет, чтобы рассматривать его как обычный именованный маршрут в движке, он будет ссылаться на корневой путь механизма Dashboard; а не тестовым двигателем.
Любые идеи о том, как я могу предотвратить это и получить доступ к маршрутам тестового движка в виджетах, отображаемых в представлении панели мониторинга? Я хочу попытаться сохранить виджеты каждого модуля модульными и содержаться внутри движка, поэтому, если основное приложение решит не использовать движок, приборная панель не должна беспокоиться о слишком большом постороннем коде.
Теперь вопрос в том, почему? – mathieugagne