2012-04-20 3 views
1

해커 뉴스에서 뉴스를 가져 와서 링크의 제목과 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

문제는 없지만 기다릴 수 있습니다 :) –