2011-12-11 61 views
11

我想重寫默認的設計註冊控制器的一些功能,以便只有某些用戶可以創建其他人的帳戶。因此,在控制器下的文件名爲registrations_controller.rb/Users文件夾,我有以下設計重寫註冊控制器 - 未初始化的常量用戶::註冊控制器

class Users::RegistrationsController < Devise::RegistrationsController 

    before_filter :check_permissions, :only => [:new, :create, :cancel] 
    skip_before_filter :require_no_authentication 

    def check_permissions 
    authorize! :create, resource 
    end 
end 

,在我的路線文件我有

devise_for:用戶:控制器=> {:註冊=>'用戶/註冊'}

當我嘗試去users/sign_up url我得到一個路由錯誤'未初始化的常量Users :: RegistrationsController'。

那麼,真正讓我感到失望的是,我在rails 3應用程序中使用了幾乎完全相同的功能,沒有出現問題。我看了一些與此類似的其他stackoveflow問題,但我仍然不明智。我現在正在創建的應用程序是一個軌道3.1應用程序,我使用的設計1.5.1

下面是有關其路由情況下,他們有用

new_user_session GET /users/sign_in(.:format)          {:action=>"new", :controller=>"devise/sessions"} 
         user_session POST /users/sign_in(.:format)         {:action=>"create", :controller=>"devise/sessions"} 
       destroy_user_session DELETE /users/sign_out(.:format)         {:action=>"destroy", :controller=>"devise/sessions"} 
         user_password POST /users/password(.:format)         {:action=>"create", :controller=>"devise/passwords"} 
        new_user_password GET /users/password/new(.:format)        {:action=>"new", :controller=>"devise/passwords"} 
        edit_user_password GET /users/password/edit(.:format)        {:action=>"edit", :controller=>"devise/passwords"} 
             PUT /users/password(.:format)         {:action=>"update", :controller=>"devise/passwords"} 
      cancel_user_registration GET /users/cancel(.:format)          {:action=>"cancel", :controller=>"users/registrations"} 
        user_registration POST /users(.:format)           {:action=>"create", :controller=>"users/registrations"} 
       new_user_registration GET /users/sign_up(.:format)         {:action=>"new", :controller=>"users/registrations"} 
       edit_user_registration GET /users/edit(.:format)          {:action=>"edit", :controller=>"users/registrations"} 
             PUT /users(.:format)           {:action=>"update", :controller=>"users/registrations"} 
             DELETE /users(.:format)           {:action=>"destroy", :controller=>"users/registrations"} 

回答

2

我想,你把這裏同樣的設置但它爲我工作。我上傳了application到github(我也上傳了日誌,所以你可以看到它真的有效)。

仔細檢查可能的拼寫錯誤。也許你忘記了一個複數或者在一個Class名字上有一個錯字。

+0

謝謝你堅持那個例子。這真的很奇怪,我似乎與你的設置完全一樣,但我仍然得到了未初始化的常量錯誤。我會繼續尋找錯別字 – Conor

+0

我有同樣的問題,原來也是我的錯字。 – Jondlm

12

我會說,你的文件名有問題。

你的文件應該被稱爲用戶/ registrations_controller.rb

這對我的作品。

3

你的registrations_controller.rb保存在哪裏?位置很重要。我發現我在將它保存到app/controllers/devise/.時出錯。它只是需要被保存在app/controllers/.如:

app/controllers/registrations_controller.rb


此外,config/routes.rb路線應該被定義爲:

devise_for :users, controllers: { registrations: 'registrations' }

0

如果你已經生成視圖移動視圖文件

我假設你已經在使用的軌道產生色器件:觀點產生的設計意見。移動views/devise/registrations文件夾到視圖/用戶 ,我想你也應該改變_path的形式

相關問題