J'ai un problème avec mon application dans Rails 5. Je crée la classe scrape.rb
qui grattage HTML via Nokogiri gem et peut enregistrer ces données dans un autre modèle, mais quand je crée un nouvel objet dans la console rails ce néant retour et ne ferraille aucune valeur:Rails 5 modèle avec Nokogri gem retour nil
2.3.0 :018 > s = Scrape.new
=> #<Scrape:0x007fba68b79e98>
2.3.0 :019 > s.scrape_new_movie
=> nil
2.3.0 :020 >
Voici scrape.rb
modèle
class Scrape
attr_accessor :title, :vote, :image_url, :description,
def scrape_new_movie
begin
doc = Nokogiri::HTML(open("https://zalukaj.com/zalukaj-film/26280/barbie_w_wiecie_gier_barbie_video_game_hero_2017_.html").read, nil, 'utf-8')
doc.css('script').remove
self.title = doc.css('#pw_title.about_movie_title').text
v = doc.css('#success_vote').text
self.vote = v.slice(2...5)
self.image_url = doc.css('.about_movie img').attr('src').text
self.description = doc.css('#pw_description.e_s3k').text
return true
rescue Exception => e
self.failure = "Something went wrong with the scrape"
end
end
def save_movie
movie = Movie.new(
title: self.title,
vote: self.vote,
image_url: self.image_url,
description: self.description
)
movie.save
end
end
Après avoir exécuté 's.scrape_new_movie', qu'est-ce que' s.failure' retour? – ReggieB
Essayez d'enlever 'begin/rescue/end' et voyez quelles erreurs se produisent. – ReggieB
Lorsque je l'ai supprimé, la valeur est toujours nulle. Comment je peux vérifier ce que 's.failure' retourne? –