Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 如何显示用户';rails上的twitter时间线_Ruby_Ruby On Rails 4_Net Http - Fatal编程技术网

Ruby 如何显示用户';rails上的twitter时间线

Ruby 如何显示用户';rails上的twitter时间线,ruby,ruby-on-rails-4,net-http,Ruby,Ruby On Rails 4,Net Http,我试图在我的网站上显示我自己的推特时间线,我已经创建了在控制台上运行良好的代码,但当我尝试在我的应用程序上这样做时,我得到的是整个响应主体,而不仅仅是推特的文本 另外,为了学习,我尝试从头开始使用NET::HTTP,而不是httParty或twitter gem 我正在通过控制器的助手执行请求 def twitter_timeline baseurl = "https://api.twitter.com" path = "/1.1/statuses/user_timeline.j

我试图在我的网站上显示我自己的推特时间线,我已经创建了在控制台上运行良好的代码,但当我尝试在我的应用程序上这样做时,我得到的是整个响应主体,而不仅仅是推特的文本

另外,为了学习,我尝试从头开始使用NET::HTTP,而不是httParty或twitter gem

我正在通过控制器的助手执行请求

def twitter_timeline
    baseurl = "https://api.twitter.com"
    path = "/1.1/statuses/user_timeline.json"
    query = URI.encode_www_form("screen_name" => "twitterapi", "count" => 5)

    address = URI("#{baseurl}#{path}?#{query}")
    request = Net::HTTP::Get.new address.request_uri

    def print_tweets(tweets)
       tweets.each do |tweet|
         puts tweet["text"]
       end
    end

    http = Net::HTTP.new address.host, address.port
    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_PEER

    consumer_key ||= OAuth::Consumer.new("SECRET", "SECRET")
    access_token ||= OAuth::Token.new("SECRET","SECRET")

    request.oauth! http, consumer_key, access_token
    http.start
    response = http.request request

    tweets = nil

    if response.code == '200' then
       tweets = JSON.parse(response.body)
       print_tweets(tweets)
    end

    nil
end
然后我这样称呼它:

<%= twitter_timeline %>


最简单的方法是使用嵌入式时间线功能

为什么在
twitter\u时间线中嵌套
print\u tweets
?那没有任何意义。无论如何,您应该从
twitter\u timeline
方法返回要显示的格式化字符串。不要在你的方法中使用
put
。@misha当我使用
return
时,我只得到最后一条tweet,而不是请求的5条tweet。你必须构建一个包含5条tweet的字符串,然后返回它。现在你似乎在重复推文,最终只返回最后一条,而忽略了前面的四条。您必须执行以下操作:
return tweets.map{tweet}tweet['text']}.join(“\n\n”)
。然后使用
simple\u format
格式化时间线:
。这很有效,谢谢@米沙说他想从头开始做一些东西,所以我不认为这有什么帮助。