rails namespace未初始化的常量

时间:2012-09-07 07:36:03

标签: ruby-on-rails ruby-on-rails-3.2

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

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

我如何解决这个问题

由于

3 个答案:

答案 0 :(得分:5)

如果您之前存在的User模型未命名空间,请尝试替换

@admin_users = Admin::User.all

@admin_users = ::User.all

答案 1 :(得分:3)

我认为生成器没有创建目录models / admin所以你应该调用User.all而不是Admin :: User.all。

检查user.rb是否在models或models / admin ...

答案 2 :(得分:0)

在我的特定情况下,我已正确命名文件和类,但包含文件夹的名称错误

我有:

/models/maps/type.rb

我不得不将其更改为:

/models/map/type.rb

注意单数文件夹名称。将其更改为单数允许Rails自动加载正确的类,并且在运行时不再出现此错误。