前缀路由路径在Rails 4中给出错误

时间:2013-10-20 20:19:28

标签: ruby-on-rails rails-routing

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

3 个答案:

答案 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'