设计Omniauth错误丢失方法?

时间:2018-05-09 14:01:02

标签: ruby-on-rails devise omniauth

我收到此错误: 用户:: 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控制器中有方法,所以不知道该怎么办?我错过了什么吗?我已经梳理了整整一天。

1 个答案:

答案 0 :(得分:0)

更新:不知何故,我在控制器中有2个用户文件夹,但有一个是隐藏的?昨晚我恢复到之前的回购时,它一定搞砸了。一旦我删除了文件夹,一切都很好!