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
を試してみましたが、助けにはなりません。また、私は毎回このエラーを取得しませんが、私はそれを取り除きたいです。あなたのスタックトレースとして
このような問題に直面しているときは、1つの操作をやめて何ができなかったかを確認することが重要です。 'doc.at_css(...)'が何も見つからなかったようです。もう一つ注目すべき点は、インデントの一貫性を維持しようとすることです。その 'if'節がそこに押し込まれてしまったようです。 – tadman
@tadmanご意見ありがとうございました。私はあなたに同意します。doc.at_css(...)が何も見つけられなかったようです。しかし、同じ取引を探すためにもう一度試してみると、それは私に出力を与えます!私は理解していません。私はインデントについてももっと注意するでしょう。 –
ようこそ。 「[mcve]」とリンク先のページをお読みください。問題を確認できるコードを提供する必要があります。現在、あなたのメソッドを呼び出す方法を教えてくれなかったので、現在はできません。 –