我需要解析一些params到我的数据库和URL中的图像。
我使用回形针作为图像。
在Rails控制台中,我可以通过以下代码将图像添加到新帖子中:
image = Image.new
image.image_from_url "http://yug-avto.ru/files/image/tradein/hyundai/877_VOLKSWAGEN_FAETON_2011_2_1366379491.jpg"
image.watermark = true
image.save!
在我的Image模型中我有
require "open-uri"
.......
def image_from_url(img_url)
self.image = open(img_url)
end
所有工作都已完成。但是当我使用Nokogiri时,这段代码不起作用。
rake aborted!
No such file or directory -
http://yug-avto.ru/files/image/tradein/peugeot/1027_Peugeot_308_2011_2_1370850441.jpg
我对Nokogiri解析的耙子任务:
doc.xpath("//item").each do |ad|
img = ad.at("image").text
img1 = Image.new
img1.image = open("#{img}")
img1.watermark = true
img1.save!
end
在Nokogiri的rake任务中,我要求'nokogiri'并要求'open-uri'。
怎么样?:))))
答案 0 :(得分:3)
这是我的解析器的代码片段...我猜你出错的地方是使用open(url)
代替parse(url)
。
picture = Picture.new(
realty_id: realty.id,
position: position,
hashcode: realty.hashcode
)
# picture.image = URI.parse(url), edit: added open() as this worked for Savroff
picture.image = open(URI.parse(url))
picture.save!
另外,检查图像是否真的存在是个好主意
picture_array.each do |url|
# checks if the Link works
res = Net::HTTP.get_response(URI.parse(url))
# if so, it will add the Picture Link to the verified Array
if res.code.to_i >= 200 && res.code.to_i < 400 #good codes will be betweem 200 - 399
verified_array << url
end
end
答案 1 :(得分:3)
谢谢TheChamp,你引导我找到正确的想法。 首先需要解析URL并在打开之后。
image = Image.new
ad_image_url = URI.parse("#{img}")
image.image = open(ad_image_url)
image.watermark = true
image.save!