내 CLI 응용 프로그램에 오류가 발생하는 메소드가 있습니다.정의되지 않은 메소드 'attr'for nil : NilClass (NoMethodError)
def self.deal_page(input, product_url)
self.open_deal_page(input)
deal = {}
html = open(@product_url)
doc = Nokogiri::HTML(html)
data = doc.text.strip
deal[:name] = doc.css("h1").text.strip
deal[:discription] = doc.css(".textDescription").text.strip
@purchase_link = nil
@purchase_link= doc.at_css("div.detailLeftColumn a.success").attr("href")
if @purchase_link.nil?
deal[:purchase] = @product_url
else
deal[:purchase] = @purchase_link
end
deal
end
과 오류는 다음과 같습니다 :
방법은
/home/himachhag-45739/code/popular-deals-from-slickdeals.net-cli/lib/popular_deals/newdeals.rb:54:in `deal_page': undefined method `attr' for nil:NilClass (NoMethodError)
from /home/himachhag-45739/code/popular-deals-from-slickdeals.net-cli/lib/popular_deals/cli.rb:70:in `disply_deal'
from /home/himachhag-45739/code/popular-deals-from-slickdeals.net-cli/lib/popular_deals/cli.rb:49:in `menu'
from /home/himachhag-45739/code/popular-deals-from-slickdeals.net-cli/lib/popular_deals/cli.rb:9:in `call'
from /home/himachhag-45739/code/popular-deals-from-slickdeals.net-cli/bin/popular-deals:10:in `<top (required)>'
from /usr/local/rvm/gems/ruby-2.3.1/bin/popular-deals:22:in `load'
from /usr/local/rvm/gems/ruby-2.3.1/bin/popular-deals:22:in `<main>'
from /usr/local/rvm/gems/ruby-2.3.1/bin/ruby_executable_hooks:15:in `eval'
from /usr/local/rvm/gems/ruby-2.3.1/bin/ruby_executable_hooks:15:in `<main>'
내가
xpath
,
at_css
,
unless
,
if
..
else
을 시도했지만 도움이되지 않습니다. 또한 매번이 오류가 발생하지는 않지만 제거하고 싶습니다. 당신의 스택 트레이스로
이와 같은 'nil' 문제에 직면 할 때 한 번의 작업을 취소하고 어떤 작업을 수행하지 못했는지 확인하는 것이 중요합니다. 'doc.at_css (...)'가 아무것도 찾지 못했던 것 같습니다. 또 다른주의 할 점은 들여 쓰기를 일관되게 유지하는 것입니다. 그'if' 절이 제자리에 빠진 것처럼 거기에 눌려 있습니다. – tadman
@ tadman 귀하의 제안에 진심으로 감사드립니다. 나는 doc.at_css (...)가 아무것도 찾지 못했음을 당신에게 동의합니다. 하지만 다시 같은 거래를 찾으면 나에게 결과물을줍니다! 나는 이해하지 못한다. 들여 쓰기에 대해서도 더주의해야합니다. –
SO에 오신 것을 환영합니다. "[mcve]"와 링크 된 페이지를 읽으십시오. 문제를 확인할 수있는 코드를 제공해야합니다. 현재 우리는 방법을 호출하는 방법을 알려주지 않았기 때문에이를 수행 할 수 없습니다. –