Ruby on Rails не может сохранить src-файл изображения, очищенный с помощью Nokogiri

#ruby-on-rails #image #nokogiri #src

#ruby-on-rails #изображение #nokogiri #Src

Вопрос:

Я пытаюсь получить значение src изображения (которое находится на другом веб-сайте) с помощью Nokogiri, сохранить его в своей базе данных и использовать для отображения этого изображения в моем представлении. Но Rails выдает это сообщение об ошибке:

Указано нулевое местоположение. Не удается создать URI.

вот мой код в контроллере:

 def scrape

doc = Nokogiri::HTML(URI.open(page_url))
items = doc.css("j-wrapper-content")
images = doc.css("div.j-img")

images.each do |image|
  link = image.css("img").attr('src').to_s
  @product.image_url = "https://www.jacadi.fr#{link}"
end

items.each do |item|
  @product.name = item.css("h1").text
  @product.price = item.css("j-prd-price p").text.to_f
end

@product.save! end
 

и мой код в поле зрения:

 <% if product.picture.attached? %>
  <%= image_tag(product.picture, class: "card-pict") %>
<% elsif %>
  <%= image_tag(product.image_url, class: "card-pict") %>
<% else %>
  <%= image_tag("gift.png", class: "card-pict mini") %>
<% end %>
 

Комментарии:

1. Вы проверили источник страницы, есть ли там атрибут src? Возможно, у них есть какой-то механизм отложенной загрузки, который полагается на Javascript, поэтому атрибут src может быть пустым.

2. Да, src присутствует, я протестировал, чтобы просто отобразить его в виде текста на мой взгляд, и это работает. Я думаю, что на веб-сайте нет отложенной загрузки… Я попробую с другого сайта.

Ответ №1:

Наконец-то найдено решение! Возникли две проблемы :

  1. В контроллере: . они отсутствовали перед селектором css, поэтому Nokogiri не смог их найти.
  2. В представлении я добавил .present? behind my product.image_url в свой оператор elsif.