主要应用程序基本上是一个用于多个引擎的容器。其中一个主要引擎是“仪表板”应用程序,它将提供各种其他引擎的统计数据,报告等。在仪表板中的其他引擎呈现部分内容时,我无法访问原始引擎的路由。Rails引擎部分在另一个引擎中不能访问原始引擎的路由
使用测试发动机为例,我把它和仪表板安装在发动机上作为我的主要应用程序的route.rb文件如下:
mount Test::Engine, :at => "/test", :as => "test"
mount Dashboard::Engine, :at => "/dashboard", :as => "dashboard"
在我的测试引擎我有一个部分,一个小部件我想在仪表板上使用。在仪表板的看法,我有:
<%= render :partial => "test/dashboard/test" %>
小部件的部分代码显示了罚款,是非常基本的:
<h3>Test</h3>
但是如果我添加的东西试图访问测试的途径之一,例如:
<%= link_to "Root", test.root_path %>
我收到以下错误,指出测试是零:
未定义的方法“root_path”的零:NilClass
如果我从部件到仪表板的看法了移动的link_to,它工作正常。如果我从小部件中的link_to中删除“测试”,将其视为引擎中的常规命名路线,它将链接到仪表板引擎的根路径;不是测试引擎的。
有关如何防止此问题并访问在Dashboard视图中呈现的小部件中的Test引擎路由的任何想法?我想试着保持每个引擎的小部件模块化并包含在引擎中,这样,如果主应用程序决定不使用引擎,仪表板不必担心太多的无关代码。
现在的问题是......为什么? – mathieugagne 2013-05-07 20:58:46