J'ai une méthode dans mon application CLI qui me donne une erreur.méthode non définie `attr 'pour nil: NilClass (NoMethodError)
La méthode est:
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
et l'erreur est:
/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>'
J'ai essayé xpath
, at_css
, unless
, if
.. else
, mais ne permet pas. De plus, je n'obtiens pas cette erreur à chaque fois, mais j'aimerais m'en débarrasser.
Lorsque vous faites face à de tels problèmes, il est important de revenir en arrière et de voir ce qui a échoué. Il semble que 'doc.at_css (...)' n'ait rien trouvé. Une autre chose à noter est d'essayer de garder votre indentation cohérente. Cette clause «si» est poussée là-dedans comme si elle avait été déplacée. – tadman
@tadman Merci beaucoup pour votre suggestion. Je suis d'accord avec vous qu'il semble que doc.at_css (...) n'a rien trouvé. Mais si j'essaye encore de chercher le même deal, ça me donne la sortie! que je ne comprends pas. Je ferai plus attention à l'indentation aussi. –
Bienvenue sur SO. Veuillez lire "[mcve]" et la page liée. Vous devez fournir un code qui nous permet de confirmer le problème. Actuellement, nous ne pouvons pas faire cela parce que vous ne nous avez pas dit comment appeler votre méthode. –