#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:
Наконец-то найдено решение! Возникли две проблемы :
- В контроллере:
.
они отсутствовали перед селектором css, поэтому Nokogiri не смог их найти. - В представлении я добавил
.present?
behind myproduct.image_url
в свой оператор elsif.