Ruby on rails 使用名称空间抛出ActionController::RoutingError的Desive Gem

Ruby on rails 使用名称空间抛出ActionController::RoutingError的Desive Gem,ruby-on-rails,devise,namespaces,ruby-on-rails-3.2,Ruby On Rails,Devise,Namespaces,Ruby On Rails 3.2,好的,关于如何在应用程序中使用名称空间时让designe工作,我已经看到了很多不同的答案,但没有一个对我有效 我将我的应用程序分为三个名称空间 主页(公共登录页) 帐户(用户的登录配置文件/帐户) 管理(尚未编写的管理后端) 我还将所有部分拆分为每个名称空间中的base文件夹。因此,我的每个控制器都继承自BaseController,后者继承自ApplicationController: module Account class UsersController < Bas

好的,关于如何在应用程序中使用名称空间时让designe工作,我已经看到了很多不同的答案,但没有一个对我有效

我将我的应用程序分为三个名称空间

主页(公共登录页) 帐户(用户的登录配置文件/帐户) 管理(尚未编写的管理后端)

我还将所有部分拆分为每个名称空间中的
base
文件夹。因此,我的每个控制器都继承自
BaseController
,后者继承自
ApplicationController

   module Account
      class UsersController < BaseController
      end
   end 
目标是在主命名空间中有一个登录/注册表单,允许用户登录到帐户命名空间中的用户控制器

现在,当我单击由以下内容生成的链接时:

我要走了

ActionController::RoutingError at /users/sign_up
uninitialized constant Account::RegistrationsController
我的routes.rb文件如下所示:

module Account
  class SessionsController < BaseController < Devise::SessionsController
  end
end
    scope :module => "account" do  
        devise_for :users, :controllers => { :sessions => "account/sessions" }
        resource :users
      end

      scope :module => "home" do
        resources :home, :about, :jobs, :terms, :privacy, :android_availability, :about, :contact
      end

      get "home/index"
      root :to => 'home::home#index'
end 
主控制器使用主布局,帐户控制器使用应用程序布局。我在主控制器中指定
layout“home”
,但在帐户控制器中不指定
layout“application”
,因为应用程序是rails查找的默认布局

嗯。我想我已经涵盖了我所有的基础。知道我做错了什么吗

谢谢

编辑:

好的,我已经向帐户名称空间添加了一个
registrations\u controller.rb
文件,方法与上面描述的
sessions\u controller.rb
文件相同

我还更新了
routes.rb
文件:

scope :module => "account" do  
    devise_for :users, :controllers => { 
      :sessions => "account/sessions",
      :registrations => "account/registrations" }
    resource :users
  end
现在我又犯了一个我不明白的错误。这是:

NoMethodError at /users/sign_up
undefined method `action' for Account::RegistrationsController:Class 
它说未定义的方法“action”在
(gem)actionpack-3.2.11/lib/action\u dispatch/routing/route\u set.rb中,这没有任何意义

具体地说,问题在于:

def dispatch(controller, action, env)
  controller.action(action).call(env)
end
编辑2:

这是我的
registrations\u controller.rb中的代码

module Account
  class RegistrationsController < BaseController < Devise::RegistrationsController
  end
end
模块帐户
类注册控制器<基本控制器<设计::注册控制器
结束
结束
编辑3:

module Account
  class BaseController < ApplicationController
  end
end
模块帐户
类BaseController<应用程序控制器
结束
结束
好的,上面是我的
base\u controller.rb
,它只是从
ApplicationController
继承的。所有其他控制器都继承自
BaseController
。因为我已经将我的应用程序拆分为三个名称空间,所以base_控制器在那里告诉名称空间中的其他控制器部分位于名称空间中名为
base
的文件夹中。如中所示

如果我没有包含
BaseController
,我会得到一个缺少的部分错误,因为designe控制器找不到部分

阅读您的错误!:-)


首先,看起来您需要定义一个
帐户::注册控制器
,就像您定义
帐户::会话控制器
一样,真的吗?!我认为SessoinsController继承了其他控制器,所以我不必这么做。我现在就做,看看会发生什么。谢谢添加RegistrationController后,我用新的错误更新了我的问题。你能发布你的
帐户::RegistrationController
类和路径吗?上面的文件名是大写的,但我不确定是否输入错误。我刚刚用registrations\u controller.rb类更新了我的问题。registrations_controller.rb文件为小写。那是个打字错误。我修好了。你所说的道路是什么意思?路线是什么?或者我在编辑2中发布了什么?我不知道我以前怎么会错过这个:Ruby没有多重继承。在这种情况下,您的<代码>帐户::RegistrationsController < /代码>将需要从<代码> DESIX继承::RegistrationsController < /C> >,因此,如果您需要的话,可以考虑使用<代码> BaseCeCufter < /Case>一个MIXIN。