所以,在泰勒的建议下,我深入研究了我正在做的事情。由于 ckeditor 与图像断开连接,由于载波和 S3,我无法直接从上传者那里获得任何信息(至少在我看来是这样)。
相反,我坚持使用 nokogiri,而且效果很好。我意识到我实际上用这个open()
命令做了什么,这是完全没有必要的。Nokogiri 解析 HTML。我可以给它 HTML 格式的@design.content
!呃,就我而言。
所以,这就是我抓取自己网站的方式,以获取与博客条目相关联的图像:
设计控制器.rb
def create
params[:design][:photo_url] = Nokogiri::HTML(params[:design][:content]).css('img').map{ |i| i['src']}[0]
@design = Design.new(params[:design])
if @design.save
flash[:success] = "Design created"
redirect_to designs_url
else
render 'designs/new'
end
end
def show
@design = Design.find(params[:id])
@categories = @design.categories
@tags = @categories.map {|c| c.name}
@related = Design.joins(:categories).where('categories.name' => @tags).reject {|d| d.id == @design.id}.uniq
set_meta_tags og: {
title: @design.name,
type: 'article',
url: design_url(@design),
image: Nokogiri::HTML(@design.content).css('img').map{ |i| i['src']},
article: {
published_time: @design.published_at.to_datetime,
modified_time: @design.updated_at.to_datetime,
author: 'Alphabetic Design',
section: 'Designs',
tag: @tags
}
}
end
更新操作与创建操作具有相同的 Nokogiri 代码。
现在我正在看它似乎有点明显,大声笑。我在这件事上停留的时间比我想承认的要长……