2017-02-27 4 views
0

を追加せずに動作しません:Railsのエンジンのルートは、私のように私のレールのアプリに搭載されたエンジン持っているエンジンの接頭辞

mount Blazer::Engine, at: "blazer" 

を、これは要求を取得:

<%= 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 

接頭辞を追加した場合、それは正常に動作しますが、私はこの1つに私のdevのブランチをリベースする前に、それが働いていても動作しませんなしだろう。

コミットが多すぎるため、問題を追跡することは本当に困難です。なぜ誰が突然このようなことが起こったのかを知る人はいますか?

+0

あなたのエンジンに 'isolate_namespace'コールがありますか?そのERBコードはどこから呼び出されますか?ホストアプリケーションから、またはエンジン自体の中から? –

+0

これはApplicationHelper:include Rails.application.routes.url_helpersに含まれていたようです。しかし、それがなぜ問題を引き起こすのかはわかりません。 – Rogue

+0

Strange。私はそれらのヘルパーを追加していましたが、エンジン自体の 'config.to_prepare'ブロックに、ホストされているアプリケーションのルートにアクセスするために使用しました。いずれにせよ、それは解決されました。 –

答えて

-1

あなたは、エンジンとホストアプリケーションがアクセスホストルートを同じルートを持っている場合あなたがengine.rb

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

にコードの下に指定することにより、エンジンを自動的にマウントすることができますのroot_path

mount Blazer::Engine, at: '/' 

でエンジンをマウントする必要がありますas

main_app.route_path 
関連する問題