0

我正在开发一个可以进行网络抓取的应用程序。在站点模型中,我有这个方法:

  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

站点模型通过名为 robots_tag_sites 的连接表有许多 robots_tags。站点模型还接受_nested_attributes_for :robots_tags。上述方法旨在获取在该方法的第 1 行中下载的所有标签,并将它们保存到 robots_tags 表的标签列中。

我认为问题在于“self.robots_tags”仍然抓取一组东西而不是一个单独的东西。但我不确定如何正确添加标签。有什么建议吗?

(顺便说一句,这是另一篇文章的后续,Rails 应用程序在模型间保存方面存在问题

4

1 回答 1

5

您应该使用self.robots_tags.create(...)来创建一个新RobotTag对象。

假设您RobotTag有一个tag属性,它可能看起来像这样:

downloaded_tags.each do |t|
  self.robot_tags.create(:tag => t)
end
于 2012-06-22T18:24:03.387 回答