2012-09-07 51 views
6

我做管理面板在我的應用程序,我做了支架用戶控制器管理(用戶模型已存在)是這樣的:軌命名空間未初始化的常量

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

和路線

namespace :admin do 
resources :users 
resources :dashboard 
end 

和控制器/管理/ 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 /管理/用戶我得到了如下荷蘭國際集團的錯誤:

NameError in Admin::UsersController#index 

uninitialized constant Admin::User 

我如何解決這個問題

感謝

+0

'app/models/admin/user.rb'是怎麼樣的? – rubiii

回答

5

如果預先存在User模型沒有命名空間,嘗試用

@admin_users = ::User.all 
更換

@admin_users = Admin::User.all 

+0

@admin_users = :: User.all給出路徑錯誤:未定義的方法'user_path' – Jawad

+0

由腳手架生成的代碼需要您的'User'模型在模塊'Admin'中,就像控制器一樣。確保你的'routes.rb'有類似'namespace:admin {resources:users}';然後轉到你的'app/views/admin/users/index.html.erb'並將'link_to'Show',admin_user'更改爲'link_to'Show',admin_user_path(admin_user)';和'link_to'Destroy',admin_user,...''link_to'Destroy',admin_user_path(admin_user),...'。 –

+0

感謝您的支持 – Jawad

3

我認爲生成器不會創建目錄models/admin,因此您應該調用User.all而不是Admin :: User.all。

檢查是否user.rb在模型或模型/管理...

+0

沒有目錄models/admin ...我是否需要爲admin命名空間創建單獨的模型,同時User.all還給出了路徑錯誤「undefined method'user_path'」 – Jawad

+0

如果您想要yes ...但沒有必要。我認爲你的情況你不需要。用戶應該在目錄模型中,然後你總是要求User.all。 – tbem

+0

給出路由錯誤「未定義的方法'user_path'」這是因爲你沒有users_controller而是一個admin_users_controller,所以你有admin_users_path而不是一個users_path ...並且在路由中你有一個名稱空間:admin do resources:用戶而不是資源:名稱空間管理員以外的用戶 – tbem

0

在我的具體情況,我已經正確命名的文件和類,但含文件夾被評爲錯誤

我:

/models/maps/type.rb 

我不得不將其更改爲:

/models/map/type.rb 

通知奇異的文件夾名稱。將其更改爲單數允許Rails自動加載正確的類並在運行時不再出現此錯誤。

相關問題