我正在开发一个返回用户加入 Twitter 的日期的项目。在搜索存在的用户时,一切都很顺利。然而,当我搜索一个不存在的用户名时,我得到了这个丑陋的错误:
NoMethodError in WelcomeController#search_results
undefined method `name' for nil:NilClass
这是我的代码:
def search_results
twitter_client = Twitter::REST::Client.new do |config|
config.consumer_key = ENV['twitter_consumer_key']
config.consumer_secret = ENV['twitter_consumer_secret']
config.access_token = ENV['twitter_access_token']
config.access_token_secret = ENV['twitter_access_token_secret']
end
@name = params[:name]
@full_name = twitter_client.user_search(@name).first.name
created_at = twitter_client.user_search(@name).first.created_at
@created_at = created_at
@user_id = twitter_client.user_search(@name).first.id
end
我是 Rails 的新手,我相信我必须使用 Rescue 或 flash error,但我不确定如何准确地实现它。请指教。
谢谢!
最佳答案
当用户不存在您搜索的用户名时,twitter_client.user_search(@name)
什么也找不到,first
方法返回 nil
,并且您正在尝试从 nil
中读取 name
属性。
这就是您收到错误的原因。
你可以这样做:
@name = params[:name]
user = twitter_client.user_search(@name).first
if user
@full_name = user.name
@created_at = user.created_at
@user_id = user.id
else
# do something else
end
关于ruby-on-rails - Twitter API- Rails 未定义方法 `name' 为 nil :NilClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26085900/