所以我一直在研究一個相當簡單的rails 4應用程序,並且我已經達到了需要添加用戶身份驗證的程度。特別是,我想通過devise和omniauth的組合來使用Google Apps(以及僅Google應用程序)身份驗證。現在,devise有一個tutorial,據說可以告訴你如何設置類似的東西。在教程中安裝設計並進行建議修改之後,一切似乎都很棒。我點擊了我的登錄鏈接,並已正確發送給谷歌進行身份驗證。不過,我提供我的憑據後,我立即獲贈路由錯誤:在rails中設置devise + omniauth,在登錄後不斷收到路由錯誤
uninitialized constant Users
這是令人困惑的。據我所知,這意味着控制器丟失了......但我肯定有users_controller.rb
,它應該是。除此之外,我不知道。
這裏是我的route.rb
以供參考:
resources :instances, :users
devise_for :users, :controllers => { :omniauth_callbacks => 'users/omniauth_callbacks' }
# authentication routes
devise_scope :user do
get 'sign_in', :to => 'devise/sessions#new', :as => :new_user_session
get 'sign_out', :to => 'devise/sessions#destroy', :as => :destroy_user_session
end
root to: 'instances#index'
而這裏的rake routes
結果:
Prefix Verb URI Pattern Controller#Action
instances GET /instances(.:format) instances#index
POST /instances(.:format) instances#create
new_instance GET /instances/new(.:format) instances#new
edit_instance GET /instances/:id/edit(.:format) instances#edit
instance GET /instances/:id(.:format) instances#show
PATCH /instances/:id(.:format) instances#update
PUT /instances/:id(.:format) instances#update
DELETE /instances/:id(.:format) instances#destroy
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PATCH /users/:id(.:format) users#update
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
user_omniauth_authorize GET|POST /users/auth/:provider(.:format) users/omniauth_callbacks#passthru {:provider=>/google_apps/}
user_omniauth_callback GET|POST /users/auth/:action/callback(.:format) users/omniauth_callbacks#(?-mix:google_apps)
new_user_session GET /sign_in(.:format) devise/sessions#new
destroy_user_session GET /sign_out(.:format) devise/sessions#destroy
root GET / instances#index
音符也就是我的運轉軌道4,並制定3.0.0.rc(因爲它的軌道4兼容)
讓我知道是否有其他任何你需要的,幾乎其他一切相關的是在本教程的事情雖然。
我有這樣的文件,但似乎我把它放錯了地方。即我把它放在'/ app/controllers /'而不是'/ app/controllers/users /'中。我仍然收到一個錯誤,但這是一個_different_錯誤,這一切都很重要。 (無效的真實性令牌) –
Rails自動加載需要在Namespace.rb或namespace/another_namespace.rb中定義'Namespace :: AnotherNamespace'。只要您明確要求,您可以將文件放在任何地方。 – fny