मैं रेल + डेविस + ओमनीएथ + Google OAuth2 का उपयोग कर रहा हूं।अपरिभाषित विधि 'session_path'
मेरे उपयोगकर्ता मॉडल (user.rb) शामिल हैं:
devise :registerable, :omniauthable, :omniauth_providers => [:google_oauth2]
मेरे routes.rb की तरह लग रहे:
:Rails.application.routes.draw do
devise_for :users, controllers: { omniauth_callbacks: 'omniauth_callbacks' }
devise_scope :user do
get 'sign_in', :to => 'devise/sessions#new', :as => :new_user_session
post 'sign_in', :to => 'devise/session#create', :as => :user_session
get 'sign_out', :to => 'devise/sessions#destroy', :as => :destroy_user_session
end
get 'services', to: 'static_pages#services'
get 'my_account', to: 'my_account#index'
get 'invite', to: 'invite#show'
get 'invite/:id', to: 'invite#show'
root 'static_pages#home'
end
जब मैं/sign_in में जाओ, मैं की तरह एक अपवाद मिल
undefined method `session_path' for #<#<Class:0x007f9b7173af28>:0x007f9b713d8da8>
में:
~/.rvm/gems/ruby-2.1.1/gems/devise-3.2.4/app/views/devise/sessions/new.html.erb
लाइन में:
<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
अगर मैं जोड़ें: यह सब काम करना शुरू करता user.rb को database_authenticatable, लेकिन मैं अपने उपयोगकर्ताओं को साइन-इन करने के लिए गूगल OAuth2 के माध्यम से ही सक्षम होना चाहते हैं, तो मैं नहीं करना चाहती : database_authenticable। ऐसा लगता है कि session_path किसी कारण से उपलब्ध नहीं है, लेकिन मुझे यकीन नहीं है कि इसे क्यों और कैसे उपलब्ध कराया जाए।
धन्यवाद, जेन
मुझे एक ही समस्या है, लेकिन मैं ओमनीएथ या तो Google OAuth2 का उपयोग नहीं कर रहा हूं। क्या आपने अंत में इसे हल किया? – Moh