Rails 3管理员命名空间问题

时间:2010-09-10 07:49:54

标签: ruby-on-rails ruby-on-rails-3

我正在将我的大部分应用程序迁移到admin命名空间,虽然有很多与此相关的指南,但我仍然无法管理。我一直主要关注this answer,以及谷歌提出的任何结果(他们都倾向于同意)。有人可以告诉我我做错了什么,所以我不再失眠了吗?

以下是错误消息:

  

错误的参数类型Module(期望的类)

app/controllers/application_controller.rb:1:in `<top (required)>'
app/controllers/admin/admin_controller.rb:1:in `<top (required)>'
app/controllers/admin/home_controller.rb:1:in `<top (required)>'

的routes.rb

namespace :admin do 
  root :to => "home#index"

  resources :users
end

系统管理员/ admin_controller.rb

class Admin::AdminController < ApplicationController

系统管理员/ home_controller.rb

class Admin::HomeController < Admin::AdminController

系统管理员/ users_controller.rb

class Admin::UsersController < Admin::AdminController

我很确定这与模块和控制器交互有关,所以我没有包含任何其他代码。但是,我现在应该找到解决方案,如果需要任何其他代码,请告诉我。

感谢。

7 个答案:

答案 0 :(得分:6)

我遇到了反向问题“错误的参数类型类(预期的模块)”,结果发现有一个帮助器定义为类而不是模块,因此请尝试搜索无意中定义为模块的类。就像定义为模块的控制器一样。

答案 1 :(得分:3)

我建议您将Admin::AdminController重命名为Admin::BaseController

答案 2 :(得分:0)

也许你有定义为Admin常量的东西?
尝试使用相同结构的新应用程序,然后添加当前的应用程序并查看其中断的位置(不是很好的建议,是吗?)。

我使用与您粘贴的管理员相同的组织...

答案 3 :(得分:0)

“错误的参数类型模块(期望的类)”

这意味着您正在定义“类”,但该名称已在其他位置定义为“模块”。搜索可能是什么......

答案 4 :(得分:0)

你可以按照下面的代码,你的控制器很好,你可以使用我在这里指定的路线。

 class Admin::AdminController < ApplicationController


 class Admin::UsersController < Admin::AdminController

这与你所写的相同,我想是的。

namespace :admin do
   resources :users do as_routes end
end
root :to => "home#index"

答案 5 :(得分:0)

@Russell,我在创建模型AdminHelper(意图包含管理员帮助消息)时遇到了这个问题:)

小心命名!

答案 6 :(得分:0)

当我使用带有无效参数的paperclip的has_attached_file时遇到了这样的问题。