2014-09-28 36 views
3

我正在研究一個項目,該項目返回用戶加入Twitter的日期。在搜索存在的用戶時,一切都很順利。然而,當我尋找不存在的用戶名,我給這個醜陋的錯誤:Twitter API- Rails未定義方法`name'爲零:NilClass

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或閃存錯誤,但我不確定如何準確執行它。請指教。

謝謝!

回答

2

當用戶不與您搜索的用戶名存在,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 
+0

就像一個魅力!非常感謝! (我會贊成它,但他們不會讓我低於15點贊成:/) – alicht 2014-09-28 20:06:21

+0

我有一個後續問題:我按照您的建議實施了代碼,它的功能就像一個魅力;如果他們搜索不存在的用戶,他們會通過渲染重定向。我遇到的問題是,如果他們搜索不可能存在的用戶 - 比如「a a a」,它會給出結果而不是錯誤頁面!爲什麼會這樣,我怎樣才能通過將它們發送到同一個渲染來解決這個問題? – alicht 2014-09-28 20:35:00

相關問題