0

升级到 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”中的斜线会引发错误。

4

3 回答 3

0

简单地说,改变这一行

match 'dashboard' => 'dashboard#index', via: :get 

作为

get 'dashboard' => 'dashboard#index'
于 2014-03-17T08:08:42.843 回答
0

使用引擎,您可以直接在路由文件中创建指向引擎控制器和操作的路由,如下所示:

Rails.application.routes.draw do
  mount MyEngine::Engine => "/foo", :as => 'my_engine'

  get 'dashboard' => 'dashboard#index'
end
于 2013-10-20T20:38:34.863 回答
0

我认为不可能在主机应用程序中将路由设置到顶层已安装引擎(安装在“/foo”上)中的控制器,例如 /foo/dashboard 调用已安装引擎的“dashboard#index”操作,并且我希望 /dashboard 也这样做。

我在主机应用程序中添加了一个同名的控制器,并重定向到已安装的引擎控制器操作。

于 2013-10-23T14:52:43.240 回答