8

我正在我的应用程序中制作管理面板,我为管理员制作了脚手架用户控制器(用户模型已经存在),如下所示:

rails g scaffold_controller Admin::User username:string password_digest:string role:string

并在路线中

namespace :admin do
resources :users
resources :dashboard
end

和 controllers/admin/users_controllers.erb 看起来像

class Admin::UsersController < ApplicationController
  # GET /admin/users
  # GET /admin/users.json
  def index
    @admin_users = Admin::User.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @admin_users }
    end
  end

因此,当我转到 url /admin/users 时,出现以下错误:

NameError in Admin::UsersController#index

uninitialized constant Admin::User

我该如何解决这个问题

谢谢

4

3 回答 3

5

如果您预先存在的User模型没有命名空间,请尝试替换

@admin_users = Admin::User.all

@admin_users = ::User.all
于 2012-09-07T07:43:44.080 回答
3

我认为生成器没有创建目录模型/管理员,所以你应该调用 User.all 而不是 Admin::User.all。

检查 user.rb 是否在模型或模型/管理员中...

于 2012-09-07T07:55:49.920 回答
1

在我的特殊情况下,我正确命名了文件和类,但包含的文件夹命名不正确

我有:

/models/maps/type.rb

我不得不将其更改为:

/models/map/type.rb

Notice the singular folder name. Changing it to singular allowed Rails to automatically load the right class and no longer have this error at runtime.

于 2014-07-29T13:41:10.847 回答