2012-04-20 12 views
1

私はHacker Newsからニュースを取得し、リンクのタイトルとURLをHTMLファイルに書き込もうとしています。ただし、最初のリンクのみが書き込まれ、他のリンクは書き込まれません。私は間違って何をしていますか?最初のリンクだけが取得されるのはなぜですか?

require 'httparty' 

def fetch(source) 
    response = HTTParty.get(source) 
    response["items"].each do |item| 
    return '<a href="' + item["url"] + '">' + item["title"] + '</a>' 
    end 
end 

links = fetch('http://api.ihackernews.com/page') 

File.open("/tmp/news.html", "w") do |f| 
    f.puts links 
end 
+0

コード内で起こっていることをよりよく反映するために自由をとり、あなたの質問のタイトルを改めました。 –

答えて

4

あなたは、この場合にreturnキーワードを使用しないでください。メソッドを途中で終了し、最初のリンクのみを返します。これを代わりに使用してください:

require 'httparty' 

def fetch(source) 
    response = HTTParty.get(source) 

    # convert response['items'] array to array of strings 
    response["items"].map do |item| 
    '<a href="' + item["url"] + '">' + item["title"] + '</a>' 
    end 
end 

links = fetch('http://api.ihackernews.com/page') 

links.length # => 30 
+0

ありがとう!これはうまくいった。しかし、SOは答えとしてそれを受け入れるために5分待たなければならないと言っています:D – Timur

+1

問題はありません、私は待つことができます:) –