2011-11-13 72 views
0

我在我的應用程序中遇到了一個非常奇怪的錯誤消息。在我的控制,我有:Ruby on Rails Twitter趨勢 - TypeError =無法將字符串轉換爲整數?

require 'open-uri' 
require 'json' 
class NoticiasController < ApplicationController 
    def index 
    url = 'https://api.twitter.com/1/trends/daily.json' 
    buffer = open(url, "UserAgent" => "Ruby-Wget").read 
    # convert JSON data into a hash 
    @result = JSON.parse(buffer) 
    end 
    end 

,並在視圖中我有

<div> 
    <% for news in @result['trends'] %> 
    <p><%= news['name'] %></p> 
    <% end %> 
</div> 

,但我得到「類型錯誤:無法轉換成字符串整數」。

我在做什麼錯?

+0

上線做你的錯誤? – topek

+0

<%= news ['name']%>

+0

@Joe Doyle:感謝您幫助[清理](http://meta.stackexchange.com/questions/128315/the-great-stack-overflow- tag-question-cleanup-of-2012),但這不是[tag:trends]的合法用法嗎? –

回答

2

results['trends']是時間戳=> [趨勢]的地圖。

您需要選擇趨勢日期,然後迭代趨勢數組。

ruby-1.9.2-p290 :011 > result['trends'].keys.each { |k| puts k } 
2011-11-13 17:00 
2011-11-13 19:00 
2011-11-13 14:00 
2011-11-13 16:00 
2011-11-13 18:00 
2011-11-13 15:00 
# etc. 

ruby-1.9.2-p290 :022 > result['trends']["2011-11-13 17:00"].each { |t| p t["name"] }; nil 
"#myweddingsong" 
"#mydivorcesong" 
"#ThingsPeopleShouldntDo" 
"GOOD LUCK 1D" 
# etc. 

例如,要得到的最新發展趨勢的名字:

> ts = result['trends'].keys.sort.last 
"2011-11-13 23:00" 
> latest_trend_names = result['trends'][ts].collect { |t| t['name'] } 
> latest_trend_names.each { |tn| p tn } 
"#myweddingsong" 
"#mydivorcesong" 
"#ThingsPeopleShouldntDo" 
"I'm a Celeb" 
"HEADLESS GAGA" 
"CHRIS BROWN IS A LEGEND" 
+0

感謝您的答案,但我該怎麼做?我對這個新的 –

+0

抱歉,現在我可以看到完整的答案。非常感謝 –

+0

@CarlosRaulAparicioHernandez完全取決於你想展示的東西。我會給答案添加一個例子。我正在限制範圍,爲什麼你得到例外 –

相關問題