升级到Rails 4后,带有前缀名称和斜杠的路由会抛出错误。
actionpack-4.0.1.rc1/lib/action_dispatch/routing/mapper.rb:239:in `default_controller_and_action':
'MyEngine/dashboard'
is not a supported controller name. This can lead to potential routing problems.
在routes.rb中我有
Rails.application.routes.draw do
mount MyEngine::Engine => "/foo", :as => 'my_engine'
match 'dashboard' => 'MyEngine/dashboard', via: :get
在安装的引擎MyEngine中:
MyEngine::Engine.routes.draw do
match 'dashboard' => 'dashboard#index', via: :get
这在Rails 3.2中运行良好,但在Rails 4中,'MyEngine / dashboard'中的斜杠会引发错误。
答案 0 :(得分:0)
使用引擎,您可以直接创建路径文件中引擎控制器和操作的路由,如下所示:
Rails.application.routes.draw do
mount MyEngine::Engine => "/foo", :as => 'my_engine'
get 'dashboard' => 'dashboard#index'
end
答案 1 :(得分:0)
我认为不可能将主机应用程序中的路由设置为顶层安装引擎(安装在“/ foo”)中的控制器,例如/ foo / dashboard调用挂载引擎的'dashboard #index'动作,我希望/ dashboard也能这样做。
我在主机应用程序中添加了一个同名的控制器,并重定向到已挂载的引擎控制器操作。
答案 2 :(得分:0)
只需更改此行
即可match 'dashboard' => 'dashboard#index', via: :get
作为
get 'dashboard' => 'dashboard#index'