Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails twitterapi-Rails未定义的方法`name';零级:零级_Ruby On Rails_Ruby_Search_Twitter_Nomethoderror - Fatal编程技术网

Ruby on rails twitterapi-Rails未定义的方法`name';零级:零级

Ruby on rails twitterapi-Rails未定义的方法`name';零级:零级,ruby-on-rails,ruby,search,twitter,nomethoderror,Ruby On Rails,Ruby,Search,Twitter,Nomethoderror,我正在做一个项目,返回用户加入Twitter的日期。在搜索存在的用户时,一切工作都很顺利。但是,当我搜索一个不存在的用户名时,我会遇到这样一个可怕的错误: NoMethodError in WelcomeController#search_results undefined method `name' for nil:NilClass 这是我的密码: def search_results twitter_client = Twitter::REST::Client.new d

我正在做一个项目,返回用户加入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错误,但不确定如何准确地实现它。请告知


谢谢

当用户不存在您搜索的用户名时,
twitter\u客户端。user\u 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

工作起来很有魅力!非常感谢你!(我会投赞成票,但他们不允许我投低于15分的赞成票:/)我有一个后续问题:我按照你的建议实现了代码,它工作起来很有魅力;如果他们搜索不存在的用户,他们将通过渲染重定向。我遇到的问题是,如果他们搜索一个不可能存在的用户,比如“a”,它会给出一个结果,而不是一个错误页面!这是为什么?我如何通过将它们发送到同一渲染来解决此问题?