我收到此错误: 用户:: OmniauthCallbacksController
找不到操作'github'我到处寻找,并在其他人的帖子上尝试了其他建议。
这是关于堆栈溢出的帖子,但他们有一个拼写错误,我没有同样的错误。 Devise OmniauthsController not being used
这条建议说检查rake路线,但我的路线符合我所指的。 https://github.com/plataformatec/devise/issues/1566
大多数其他链接都是类似的问题,我仔细检查了我的信息,更改了内容并仍然出错。
有关我的代码的信息。 的Gemfile:
gem 'omniauth-github'
配置/ routes.rb中:
devise_for :users, :controllers => { :omniauth_callbacks => 'users/omniauth_callbacks' }
用户:: OmniauthCallbacksController:
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def github @user = User.from_omniauth(request.env [“omniauth.auth”]) if @ user.persisted? sign_in_and_redirect @user,event :: authentication set_flash_message(:notice,:success,kind:“Github”)if is_navigational_format? 其他 redirect_to root_path 结束 结束 端
用户模型:
devise :database_authenticatable, :registerable,
:可恢复,:可记住,:可跟踪,:可验证,:omniauthable,:omniauth_providers =&gt; [:github上]
def self.from_omniauth(auth)
where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
user.email = auth.info.email
user.uid = auth.uid
user.provider = auth.provider
user.password = Devise.friendly_token[0, 20]
user.name = auth.info.name #assuming the user model has a name
user.oauth_token = auth.credentials.token
user.image = auth.info.image #assuming the user model has an image
user.save!
end
端
设计初始化程序:
config.omniauth :github, Rails.application.secrets.github_client_id, Rails.application.secrets.github_client_secret, scope: 'user:email'
由于我在Users :: OmniauthCallBacks控制器中有方法,所以不知道该怎么办?我错过了什么吗?我已经梳理了整整一天。
答案 0 :(得分:0)
更新:不知何故,我在控制器中有2个用户文件夹,但有一个是隐藏的?昨晚我恢复到之前的回购时,它一定搞砸了。一旦我删除了文件夹,一切都很好!