您好,我正在学习本教程http://grschafer.com/guides/2013/09/07/steam-openid-and-webapi-with-rails/
我设置了steam的登录按钮,我可以点击我的帐户,但当我试图返回我的主页时,我得到了这个错误。
nil:NilClass提取的源代码的NoMethodError未定义方法‘[]’(在第39行附近):
def player
@player ||= raw_info["response"]["players"].first
end
def steam_id谢谢您抽时间见我。
发布于 2015-05-22 22:12:54
我假设您的问题在于raw_info很可能是nil,因此抛出错误,因为您试图访问其中不存在的值。在这个阶段尝试使用调试器(如果您有像better_errors这样的gem或者正在使用Rails4,那么您可能有一个调试器)并检查raw_info的值。
您还可以在声明实例变量之前检查raw_info是否存在。
发布于 2015-05-23 09:43:31
如果没有更多的上下文,很难说您的代码中发生了什么,但我90%确定您收到了这个错误,因为您正在尝试访问omniauth-steam模块中的raw_info散列。你不能这样做,因为在omniauth策略之外是不可访问的,例如,在你的控制器或视图中。如果您在应用程序中定义了自己的raw_info,我们将无法告诉您发生了什么,除非您发布该代码。
此外,omniauth raw_info散列通常只包含一个用户的身份凭证。请看这里的源代码:
https://github.com/reu/omniauth-steam/blob/master/lib/omniauth/strategies/steam.rb
甚至没有响应键,所以我不确定您的代码片段到底是要做什么。
简而言之,这里的信息太少,无法说明您的代码到底发生了什么。
发布于 2015-05-25 10:52:34
我找到解决方法了!原来你需要在配置文件夹中的secrets.yml文件中的ENV密钥旁边输入Steam API密钥。
production: secret_key_base: <%= ENV["YOUR_STEAM_KEY"] %>另外,作为新的figaro版本的附注
$ figaro install有关Secret_token.rb更改的更多信息:
secret_token.rb存在于Rails3和Rails4.0应用程序中;它不存在于Rails4.1应用程序中。在Rails4.1中,它已被secrets.yml文件替换:http://guides.rubyonrails.org/upgrading_ruby_on_rails.html#config-secrets-yml
https://stackoverflow.com/questions/30398379
复制相似问题