【问题标题】:ActionController::RoutingError (uninitialized constant User::UsersController) in heroku (but everything works in local)Heroku中的ActionController::RoutingError(未初始化的常量User::UsersController)(但一切都在本地工作)
【发布时间】:2011-06-30 05:51:50
【问题描述】:

我正在尝试在 heroku 中运行我的应用,但在尝试注册甚至访问设计的登录页面时出现此错误:

ActionController::RoutingError (uninitialized constant User::UsersController)

这是我在 heroku 中遗漏的设计错误还是服务器设置?

顺便说一句,我在 cedar 堆栈中运行 rails3.1 应用程序并加载索引页面很好,但如果我尝试登录或注册,它就会崩溃。

注册表会显示,但是当我提交时,它就崩溃了。我检查了日志,它确实 POST 到控制器,但 GETting 结果页面(我猜是重定向时)把它炸毁了。

有什么帮助吗?

编辑

这是我的路线:

root :to => "home#index"

devise_for :users

namespace :user do
  root :to => "users#welcome"
end

resources :users, :only => :show

heroku 支持人员也询问了我的路线,但为什么它只发生在生产环境中?另外我认为路线没有任何问题……有吗?

【问题讨论】:

  • 你的路线是什么样的?
  • @Johhny Grass,我用我的路线更新了问题

标签: heroku devise ruby-on-rails-3.1


【解决方案1】:

我发现您不需要删除用户登录时的默认 root。所以替换 namespace 调用并使用以下内容:

match 'users' => 'users#welcome', :as => 'user_root'

这样您仍然可以拥有两个“主页”。它对我有用。

https://github.com/plataformatec/devise/wiki/How-To%3a-Redirect-to-a-specific-page-on-successful-sign-in

【讨论】:

  • 哇,谢谢!我一直在寻找这个解决方案!但是您知道为什么命名空间解决方案在开发环境中似乎可以工作,但在生产中会中断吗?
【解决方案2】:

这是你的问题:

namespace :user do
  root :to => "users#welcome"
end

你能去掉这个吗?

【讨论】:

  • 也许@corroded 想要那条路线......另一个解决方案(使用匹配:as)做了类似的事情,但有效!
【解决方案3】:

我遇到了同样的错误。错误只能在 Heroku 中重现,而不是在本地重现。我意识到,虽然我已将资源添加到路由并推送它,但所有生成的脚手架仍然位于本地。一旦我将所有生成的东西添加到 git 并推送,就可以在 Heroku 上正常工作。

【讨论】:

    猜你喜欢
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 2018-09-04
    • 2013-08-25
    • 1970-01-01
    • 2016-01-16
    • 2017-08-05
    • 1970-01-01
    相关资源
    最近更新 更多