【问题标题】:Routing Error - uninitialized constant Users::RegistrationsController路由错误 - 未初始化的常量 Users::RegistrationsController
【发布时间】:2015-05-23 19:55:47
【问题描述】:

我已经开始使用 devise gem 开发一个用于用户注册等的 Web 应用程序。我是 Ruby/Rails 环境的新手。所以这是我训练的一部分。

我的问题和老帖子@devise overriding registrations controller - uninitialized constant Users::RegistrationsController很相似

主页显示后,当我点击注册按钮时,我收到此错误。我在网上对此问题进行了一些研究,但无济于事。

在 app/controllers/users/registrations_controllers.rb 我有这个代码:

   class Users::RegistrationsController < Device::RegistrationsController

    def create
      super do |resource|
        if params[:plan]
           resource.plan_id = params[:plan]
           if resource.plan_id == 2
              resource.save_with_payment
           else
              resource.save
           end
         end
       end
     end  
    end

在 Routes.rb 我有这行代码:

    devise_for :users, :controllers => { :registrations =>         'users/registrations' }

如果您需要任何其他信息来帮助解决此错误,请告诉我。

【问题讨论】:

  • 试试app/controllers/users/registrations.controllers.rb 应该是registrations_controller.rb。重命名文件名
  • 不要使用快捷符号Users::RegistrationsController,而是尝试将其包装在Users 模块中:module Users; class RegistrationsController
  • @Sontya 实际上我将它作为registrations_controller.rb 而不是registrations.controller.rb 并且它仍然无法正常工作。
  • @janfoeh 我不知道该怎么做,所以如果你能详细说明一下,我将不胜感激......这是我的第一个应用程序,仍在努力理解所有疯狂的术语!
  • 第一行还有一个错字:Device::RegistrationsController

标签: ruby-on-rails devise uninitialized-constant


【解决方案1】:

routes.rb,尝试:

devise_for :users,
  :skip => [:registrations, :sessions]

as user do
  # Registrations
  get   '/signup'   => 'users/registrations#new', as: :new_user_registration
  post  '/signup'   => 'users/registrations#create', as: :user_registration

它应该可以工作。

【讨论】:

  • 非常感谢!我一直在寻找如何停止 Devise 覆盖控制器的几个小时,但在任何地方都没有看到这一点。这终于解决了我的问题。
猜你喜欢
  • 2014-02-01
  • 1970-01-01
  • 2012-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-24
  • 1970-01-01
  • 2012-01-18
相关资源
最近更新 更多