我正在尝试在同一个应用中的两个不同点安装引擎。
第一点,正在工作,在根级别'localhost:3000 / news'。
第二个是深度资源,所需的网址结构如下:'localhost:3000 / venues / 1 / news'。这不起作用。
我正在主机应用程序路由文件中初始化引擎,如此
mount NewsEngine::Engine => "/"
resources :venues do
mount NewsEngine::Engine => "/"
end
然而,运行rake路线只会产生第一级路线。
newsitems GET /news(.:format) news_engine/newsitems#index
newsitem GET /news/:newsitem_id(.:format) news_engine/newsitems#show
奇怪的是,即使是第一级引用也会引发错误:
=link_to "News", intertain_news_engine.newsitems_path
=> No route matches {:action=>"index"} missing required keys: [:venue_id]
我希望此错误尝试拨打venue_newsitems_path
而不是newsitems_path
引擎本身的路由文件如下所示。
NewsEngine::Engine.routes.draw do
resources :newsitems, param: :newsitem_id,
only: [:index, :show],
path: 'news'
end
使用主机应用程序中的配置块检索场地,该配置块告诉引擎从主机应用程序控制器调用before_action方法 - 虽然我看不出这会是一个什么问题,因为它目前似乎完全取决于路由。