2017-02-27 97 views
0

我已经安装在我的轨道的引擎应用为引擎前缀工作:Rails的引擎路线不无添加

mount Blazer::Engine, at: "blazer" 

现在,这个GET请求:

<%= link_to "New Query", new_query_path, class: "btn btn-info" %> 

重定向到这一点:

blazer/assets?action=new&controller=blazer%2Fqueries 

而不是

blazer/queries/new 

如果我重写外套引擎查询视图和

blazer.new_query_path 

添加前缀,它会正常工作,但没有它不工作,即使它的工作之前,我重订我的Dev分支到这一个。

因为提交的提交太多,所以很难找出问题。有没有人有任何指示,为什么这突然发生?

+0

在引擎中有'isolate_namespace'调用吗?从哪里调用ERB代码?从主机应用程序或引擎本身? –

+0

似乎这个问题包含在ApplicationHelper中:include Rails.application.routes.url_helpers。不知道为什么会造成问题,虽然 – Rogue

+0

奇怪。我曾经添加这些助手,但在引擎本身的config.to_prepare块中有权访问托管应用程序的路由。无论如何,它已经被解决了。 –

回答

-1

您需要在root_path

mount Blazer::Engine, at: '/' 

安装引擎可以自动在engine.rb

initializer 'blazer', before: :load_config_initializers do 
    Rails.application.routes.append do 
    mount Blazer::Engine => '/' 
    end 
end 

指定下面的代码安装引擎如果引擎和主机应用程序具有相同的路线,然后访问主机路由as

main_app.route_path