Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Twitter API- Rails undefined method `name' for nil:NilClass

I'm working on a project that returns the date of when a user joined Twitter. In searching for a user that exists, everything works smoothly. However, when I search for a username that doesn't exist, I'm given this ugly error:

  NoMethodError in WelcomeController#search_results
  undefined method `name' for nil:NilClass

Here is my code:

 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

I'm new-ish to Rails and I believe I have to use Rescue or a flash error, but am not sure how to accurately implement it. Please advise.

Thanks!

like image 448
alicht Avatar asked Feb 17 '26 16:02

alicht


1 Answers

When a user does not exist with the username you search for, twitter_client.user_search(@name) finds nothing, and first method returns nil, and you are trying to read the name attribute from nil.

That's why you get the error.

You can do this:

@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
like image 158
Omid Kamangar Avatar answered Feb 20 '26 06:02

Omid Kamangar



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!