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

ジェネレータはディレクトリmodels/adminを作成していないと思うので、Admin::User.allではなくUser.allを呼び出す必要があります。

user.rbがmodelsまたはmodels/adminにあるかどうかを確認してください...

于 2012-09-07T07:55:49.920 に答える
1

私の特定のケースでは、ファイルとクラスに正しい名前を付けましたが、それを含むフォルダーの名前が間違っていました。

私が持っていた:

/models/maps/type.rb

次のように変更する必要がありました。

/models/map/type.rb

単数形のフォルダー名に注意してください。これを単数形に変更すると、Rails は適切なクラスを自動的にロードできるようになり、実行時にこのエラーが発生しなくなりました。

于 2014-07-29T13:41:10.847 に答える