Rails 3 管理员命名空间问题

9
我正在将我的应用程序的大部分迁移到管理命名空间,虽然有许多相关指南,但我仍然无法处理。我主要是遵循这个答案,以及谷歌搜索结果(它们都倾向于同意)。请问有人能告诉我我做错了什么,这样我就不会再失眠了吗?
这是错误消息:

参数类型错误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/admin_controller.rb

class Admin::AdminController < ApplicationController

admin/home_controller.rb

class Admin::HomeController < Admin::AdminController

admin/users_controller.rb

class Admin::UsersController < Admin::AdminController

我相信这个问题主要与模块和控制器之间的交互有关,所以我没有包含其他代码。然而,我应该已经找到解决方案,请让我知道是否需要任何其他代码。

谢谢。


或许是类 Admin::AdminController < ::ApplicationController。 - Sławosz
7个回答

6

我遇到了相反的问题“错误的参数类型 Class (期望模块)”,结果发现有一个帮助程序被定义为类而不是模块,因此请尝试搜索意外定义为模块的类。例如,作为模块定义的控制器。


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

0

"wrong argument type Module (expected Class)"

这意味着你正在定义一个“类”,但是该名称已经在其他某个地方被定义为“模块”。请搜索一下可能是什么...


0

当我使用Paperclip的has_attached_file时,遇到了参数无效的问题。


0
也许你有将某些内容定义为Admin常量吗?
尝试创建一个新的应用程序,具有相同的结构,然后从当前应用程序中添加组件,检查它在哪里出错(这个建议不太好,对吧?)。
我使用了你复制的相同的管理员组织方式...

0

@Russell,我遇到了一个问题,创建了一个名为AdminHelper的模型(用于包含管理员帮助信息):)

在命名事物时要小心!


0

你能够理解下面的代码吗?你的控制器没问题,你可以使用我在这里指定的路由。

 class Admin::AdminController < ApplicationController


 class Admin::UsersController < Admin::AdminController

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接