Routing Rails 4中具有多个字的控制器的路由

Routing Rails 4中具有多个字的控制器的路由,routing,ruby-on-rails-4,Routing,Ruby On Rails 4,我刚刚升级到Rails 4,发现了一个与路由有关的意外行为 我们有一个名为EmailPreviewController的控制器。此操作的路由是: get "/emailpreview", controller: 'EmailPreview', action: :index 但是,升级到Rails 4后,在加载环境时会引发以下错误: 'EmailPreview' is not a supported controller name. This can lead to potential rout

我刚刚升级到Rails 4,发现了一个与路由有关的意外行为

我们有一个名为EmailPreviewController的控制器。此操作的路由是:

get "/emailpreview", controller: 'EmailPreview', action: :index
但是,升级到Rails 4后,在加载环境时会引发以下错误:

'EmailPreview' is not a supported controller name. This can lead to potential routing problems. See http://guides.rubyonrails.org/routing.html#specifying-a-controller-to-use
我已经看过了,但是没有任何迹象表明使用CamelCase名称的控制器是不正确的

如果我将控制器更改为小写,则不会出现任何问题:

# this works fine
get "/emailpreview", controller: 'emailpreview', action: :index

这是预期的行为吗?现在不可能使用camelcase控制器名称吗?或者这里发生了其他事情吗?

对此的回答有点违反直觉。我想它是按设计的,但它不是我所期望的

在Rails 3中,可以使用对象的名称指定控制器 在Rails 3中,您可以传递控制器对象的名称,Rails将找到它的路径:

get "emailpreview", controller: 'EmailPreview', action: :index
将找到包含在
email\u preview.rb
中的
EmailPreviewController

然而,在Rails 4中,您需要在snake case中传递控制器名称 在Rails 4中,似乎需要在snake case中传递控制器对象的名称:

get "emailpreview", controller: 'email_preview', action: :index
这将进入
email\u preview.rb
中包含的
EmailPreviewController

另请参见(尽管在这个特定实例中,这并不能解释太多)