Ruby 如何显示用户';rails上的twitter时间线
我试图在我的网站上显示我自己的推特时间线,我已经创建了在控制台上运行良好的代码,但当我尝试在我的应用程序上这样做时,我得到的是整个响应主体,而不仅仅是推特的文本 另外,为了学习,我尝试从头开始使用NET::HTTP,而不是httParty或twitter gem 我正在通过控制器的助手执行请求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
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
格式化时间线:
。这很有效,谢谢@米沙说他想从头开始做一些东西,所以我不认为这有什么帮助。