2012-11-27 2 views
0

웹 사이트에서 가져온 정보를 출력하는 루프가 있습니다. 정보를 읽을 수있는 방식으로 표시하려면 내보기 페이지에 표시 될 배열에 정보를 삽입하십시오. 그러나 배열은 검색된 모든 값을 저장하지 않고 대신 마지막 값만 저장합니다. 결국 배열에 삽입 된 마지막 값만 표시 할 수 있습니다. 나는 홈 페이지에 갈 때배열은 루비의 마지막 값을 레일에만 저장합니다.

내 컨트롤러 파일 ...보기 home.html.erb 파일에서

def home 
    scrap() 
end 

private 

def scrap 

require 'rubygems' 
require 'nokogiri' 
require 'open-uri' 


time = Time.new 
month = I18n.t("date.abbr_month_names")[time.month] 
day = time.day 
@strings = [] 

#United States 
cities = [ 
    "sfbay", "losangeles", "athensga", "phoenix", "santabarbara", "denver", 
    "panamacity", "miami", "austin", "bakersfield", "keys", "newyork" 
] 

cities.map do |city| 

#Search Terms 
search_terms = ["mechanic", "car", "tech"] 

search_terms.map do |term| 

    escaped_term = CGI.escape(term) 

    url = "http://#{city}.craigslist.org/search/jjj?query=#{escaped_term}&catAbb=jjj& 
    srchType=A" 

    doc = Nokogiri::HTML(open(url)) 

    doc.css(".row").map do |row| 

     date = row.css(".itemdate").text 

     a_tag = row.css("a")[0] 

     text = a_tag.text 

     link = a_tag[:href] 

     @strings == [] 

     if date = "#{month} #{day}" 
     @strings << "#{date} #{text} #{link}" 
     end 

    end 

end 

end 

end 

...

<%= raw(@strings.join('<br />')) %> 

을 그래서, 난 단지 표시를 해요 배열에 마지막에 삽입 된 값. 무엇이 잘못되었으며 어떻게 수정합니까?

답변

1

모든 도시의 모든 행에 대해 새로운 배열을 만듭니다. (하지만 실제로는 지정하지 않습니다. 할당은 현재 ==입니다.)

다른 경우 비교를 수행하는 대신 "# {month} # {day}"과 같은 날짜를 설정합니다.

+0

흠, 변경해야 할 내용이 있지만 내 페이지는 여전히 반환되지 않습니다. 편집 : 작동하도록했습니다. 도와 주셔서 감사합니다. – jason328

관련 문제