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