Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails SessionControllerCreate中的Rails 4 NoMethodError为nil:NilClass创建未定义的方法'slice'_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails SessionControllerCreate中的Rails 4 NoMethodError为nil:NilClass创建未定义的方法'slice'

Ruby on rails SessionControllerCreate中的Rails 4 NoMethodError为nil:NilClass创建未定义的方法'slice',ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我的会话控制器 class SessionsController < ApplicationController def create user = User.from_omniauth(env["omniauth.auth"]) session[:user_id] = user.id redirect_to root_url end def destroy

我的会话控制器

       class SessionsController < ApplicationController
         def create
         user = User.from_omniauth(env["omniauth.auth"])

         session[:user_id] = user.id
         redirect_to root_url
        end

       def destroy
           session[:user_id] = nil
           redirect_to root_url
        end
            end
我的用户.rb

      class User < ActiveRecord::Base

       def self.from_omniauth(auth)
             where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user|
           user.provider = auth.provider
           user.uid = auth.uid
           user.name = auth.info.name
           user.oauth_token = auth.credentials.token
           user.oauth_expires_at = Time.at(auth.credentials.expires_at)
           user.save!
     end
  end
结束 有人能告诉我我在S.O上搜索相同但无法找到相关解决方案的错误原因吗 结束

我解决了这个问题

self.from_omniauth尝试创建新用户,因此我收到验证错误电子邮件不能为空或用户名不能为空,请评论您的验证并尝试


在验证中使用model on=>create,on=>update中的rails模型场景

您希望您的env[omniauth.auth]变量保持什么样的状态…您在auth上调用slice,auth为nil。您的omniauth哈希值为零。我希望我的Facebook身份验证首先使用raise auth.inspect检查auth的值