Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.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 字符串上的Rails TypeError(没有将符号隐式转换为整数)_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 字符串上的Rails TypeError(没有将符号隐式转换为整数)

Ruby on rails 字符串上的Rails TypeError(没有将符号隐式转换为整数),ruby-on-rails,ruby,Ruby On Rails,Ruby,在会话上设置了一个简单的令牌检查之后,rails将显示以下内容 TypeError(没有将符号隐式转换为整数) app/controllers/sessions\u controller.rb:21:in'verify\u token' 关于这个方法 所以,正如我检查的那样,这似乎是正确的 有人知道为什么会发生这种情况吗 def verify_token @current_user = User.find_by(auth_token: request.headers['token'] [

在会话上设置了一个简单的令牌检查之后,rails将显示以下内容

TypeError(没有将符号隐式转换为整数)

app/controllers/sessions\u controller.rb:21:in'verify\u token'

关于这个方法

所以,正如我检查的那样,这似乎是正确的

有人知道为什么会发生这种情况吗

def verify_token
    @current_user = User.find_by(auth_token: request.headers['token'] [:auth_token])    
    if @current_user    
      render json: {message:"verified",  status: 200}    
    else    
      render_unauthorized("Token failed verification")
    end
end

问题是'request.headers['token']可能包含字符串

当你这样做的时候

request.headers['token'] [:auth_token]
您正在字符串上运行
[]
方法,如果该方法包含整数,则允许使用该方法

'carrot'[2]
=> 'r'
但如果使用符号,则不允许使用该选项,因为它无法自动将符号转换为整数(无隐式转换)

可能足够做

@current_user = User.find_by(auth_token: request.headers['token'])

最有可能的是
request.headers['token']
返回一个数组,您正试图访问
auth_token
键,因此Ruby尝试从符号到数组索引的转换。啊,好的,谢谢Sebastian