Ben*_*ney 0 ruby ruby-on-rails
我正在开发一个可以进行网页抓取的应用程序.在网站模型中,我有这个方法:
def download_meta_tags
downloaded_tags = Nokogiri::HTML(Net::HTTP.get(self.domain, "/")).xpath("//meta[@name='robots']")
downloaded_tags.each do |t|
self.robots_tags.tag << t
end
end
Run Code Online (Sandbox Code Playgroud)
站点模型通过名为robots_tag_sites的连接表有许多robots_tags.网站模型还接受了_nested_attributes_for:robots_tags.上述方法旨在获取在方法的第1行中下载的所有标记,并将它们保存到robots_tags表的tags列中.
我认为问题在于"self.robots_tags"仍然会抓取一系列东西而不是一个单独的东西.但我不确定如何正确添加标签.有什么建议?
(顺便说一句,这些是另一篇文章的后续内容,Rails应用程序在模型间保存方面存在问题)
您应该self.robots_tags.create(...)用来创建一个新RobotTag对象.
假设你RobotTag有一个tag属性,它可能看起来像这样:
downloaded_tags.each do |t|
self.robot_tags.create(:tag => t)
end
Run Code Online (Sandbox Code Playgroud)