2013-06-27 3 views
-1

나는 야후로부터 주식 시세를 가져 오는 루비 프로그램을 구성하고있다. 그것은 하나 개의 재고를 위해 잘 작동하지만 내가 주식을 내 배열을 통해 루프하려고 할 때 다음과 같은 오류 얻을 : 아래 정의되지 않은 지역 변수 또는 메소드 NameError

nyahoo.rb:20:in `<main>': undefined local variable or method `stock' for main:Object (NameError). 

나는 내가 뭘 잘못에 대한 모든 입력에 대한 감사하게 될 것입니다 코드입니다.

감사

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

symbol = ['ARRS','BCST'] 

symbol.each do |s| 

@page = Nokogiri::HTML(open("http://finance.yahoo.com/q?s=#{s.upcase}&ql=1")) 

end 

def marketCap(stock) 

    return @page.xpath("//td[@class='yfnc_tabledata1']") 

end 


ask = marketCap(stock)[3].text.split('x') 
puts ask[0] 
+0

오류 메시지는 "'stock'라는 변수 나 메소드가 없으며'ask = marketCap (stock) ..'행 (# 20)을 참조하고 있습니다. 식별자가 매개 변수로만 나타나므로 제공된 코드를 제공하는 것에 동의해야합니다. 배열은 그 배열과 아무 관련이 없습니다. 이는 추가 프로그래밍 오류입니다. – user2246674

+0

여러 페이지를 가져 와서 매번 결과로'@page'를 덮어 쓰기 때문에 이것은 의도 한대로 작동하지 않습니다. – tadman

답변

2

수정이 부분 marketCap(stock)[3].text.split('x')이 필요했습니다. 실제 값이 의 일부 값을 전달하십시오.

+0

귀하의 권리, 내가 귀하의 요점을 볼 코드를 검토, 적절한 페이지를 얻으려면 기호를 통해 루프 및 @ 페이지, 어떻게 ask = marketCap (주식) [3]. 텍스트. split ('x') – rahrahruby

+2

@rahrahruby 메소드'marketCap (stock) '안에'주식'을 사용하는 곳이 없습니다. 그렇다면 왜 그 방법에'주식 '을 나눠주고 있습니까? –

관련 문제