Rails omniauth и обычный вход в систему, что дает неопределенную ошибку метода - PullRequest
0 голосов
/ 15 ноября 2018

Я использовал инструкции Rails Tutorial для создания рабочего логина.А потом, чтобы добавить авторизацию Google, я использовал метод omniauth.

Однако всякий раз, когда я вхожу в систему, используя учетную запись Google, я получаю сообщение об ошибке в session_controller.Где написано:

NoMethodError (undefined method `[]' for nil:N
ilClass): app/controllers/sessions_controller.rb:6:in `create'

Я добавляю session_controller

Sessions_controller.rb

    class SessionsController < ApplicationController
  def new
  end

  def create
    @user = User.find_by(email: params[:session][:email].downcase)
    if user && user.authenticate(params[:session][:password])
      log_in user
      params[:session][:remember_me] == '1' ? remember(user) : forget(user)
      redirect_back_or user
    else
      flash.now[:danger] = 'Invalid email/password combination'
      render 'new'
    end
  end

  def create_from_omniauth
    @user = User.from_provider_data(env["omniauth.auth"])
    session[:user_id] = user.id
    redirect_to user
  end

  def destroy
    log_out if logged_in?
    redirect_to root_url
  end

  def google_destory
    session[:user_id] = nil
    redirect_to root_url
  end

end

Как мне решить эту проблему, любая помощь будет принята с благодарностью.

Спасибо!

1 Ответ

0 голосов
/ 15 ноября 2018

Я думаю, потому что это ENV, а не env.

@user = User.from_provider_data(env["omniauth.auth"])

до

@user = User.from_provider_data(ENV["omniauth.auth"])

, если env не определено вами

...