我有一個方法在我的CLI應用程序中給我一個錯誤。未定義的方法`attr'爲零: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(...)'沒有找到任何東西。另外需要注意的是試着保持縮進一致。那條'如果'條款被推到那裏,就像它被滑出了一樣。 – tadman
@tadman非常感謝您的建議。我同意你的看法,就像doc.at_css(...)沒有找到任何東西。但如果我再次嘗試尋找相同的交易,它確實給了我輸出!我不明白。我也會更加註意縮進。 –
歡迎來到SO。請閱讀「[mcve]」和鏈接頁面。您需要提供允許我們確認問題的代碼。目前我們不能這樣做,因爲您沒有告訴我們如何調用您的方法。 –