gpt4 book ai didi

Rails 4 中具有多个字的 Controller 的路由

转载 作者:行者123 更新时间:2023-12-01 17:48:31 25 4
gpt4 key购买 nike

我刚刚升级到 Rails 4,发现路由出现了意外行为。

我们有一个名为 EmailPreviewController 的 Controller 。为此的路由是:

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

我看过 the page但是它表明没有任何迹象表明使用带有 CamelCase 名称的 Controller 是不正确的。

如果我将 Controller 更改为小写,则没有任何问题:
# this works fine
get "/emailpreview", controller: 'emailpreview', action: :index

这是预期的行为吗?现在是否无法使用驼峰式 Controller 名称,或者这里还有其他事情吗?

最佳答案

对此的回答有些违反直觉。我认为它是按设计的,但这不是我所期望的。
在 Rails 3 中,您可以使用对象的名称指定 Controller
在 Rails 3 中,您可以传递 Controller 对象的名称,Rails 会找到它:

get "emailpreview", controller: 'EmailPreview', action: :index
会找到通往 EmailPreviewController 的路包含在 email_preview.rb 中.
但是在 Rails 4 中,您需要以蛇形方式传递 Controller 名称
在 Rails 4 中,您似乎需要以蛇形方式传递 Controller 对象的名称:
get "emailpreview", controller: 'email_preview', action: :index
这将进入 EmailPreviewController包含在 email_preview.rb 中.
另见 http://guides.rubyonrails.org/routing.html#controller-namespaces-and-routing (虽然这在这个特殊情况下并没有解释太多)

关于Rails 4 中具有多个字的 Controller 的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19607305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com