未定义的方法`[]'为nil:NilClass在尝试拉取twitter头像时

时间:2013-04-14 03:07:32

标签: ruby-on-rails ruby omniauth twitter-oauth

我正在尝试使用这些代码从Twitter获取用户的个人资料头像

我知道如何修复此错误消息吗?

以下是我在用户助手中使用的内容

module UsersHelper

def twitteravatar_for(user, options = { size: 50 })
    omniauth = request.env['omniauth.auth']
    self.image = omniauth['info']['image'].sub("_normal", "_bigger")
    gravatar_url = self.image
    image_tag(gravatar_url, alt: user.name)
  end
end

然后我试图在视图中使用它并拉出用户的个人头像

<%= link_to twitteravatar_for(feed_item.user), feed_item.user %>

是因为我不能在帮助器中使用request.env['omniauth.auth']吗?

2 个答案:

答案 0 :(得分:0)

链的一个值为零

request.env['omniauth.auth']['info']['image']

使用puts来确定哪一个

puts request.env['omniauth.auth']

例如,也许omniauth ['info'] ['image']为零,因为用户没有图像集?

答案 1 :(得分:0)

检查的好方法是

img = request.env.try('[]','omniauth.auth').try('[]','info').try('[]','image')

如果中间出现问题,答案是正确的img或nil。