如何在不同的领域显示数据?

时间:2014-05-09 11:25:25

标签: ruby-on-rails nokogiri

当我加载我的网页时,它从ebay中获取数据。确定。

但数据并未显示在不同的行中。我希望表现出来:

   CATEGORY LISTS

      Samsung
      Nokia
      Apple
      HTC
      Sony
      Blackberry 

但显示如下:

    CATEGORY LISTS
   Samsung Nokia Apple HTC Sony Blackberry

因为所有数据都保存在一个名称的一个ID类别中。

我的代码:

           class Category < ActiveRecord::Base
           has_many :products


             url ="http://www.ebay.in/cat/mobiles"
             doc = Nokogiri::HTML(open(url))
             name = doc.css("#brand .nav-tabs-m a").text

             if Category.find_by_name(name).nil?
             Category.create(:name => name)
           end
        end

请帮我解决。

2 个答案:

答案 0 :(得分:0)

HM。如果我对你说不错的话。

你的结果如下:

=> "\n    \t\t\t\t\t\t\t\n\t\t\t\t\t\t\tSamsung\n  \t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tNokia\n  \t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tApple\n  \t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tHTC\n  \t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tSony\n  \t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tBlackberry"

试试这个:

?> >> name.gsub(/\s+/, " ")

得到这个:

=> "Samsung Nokia Apple HTC Sony Blackberry"

然后你可以把每个单词放在一个数组中:

"Samsung Nokia Apple HTC Sony Blackberry".split(/\W+/)

哪个得到了这个:

["Samsung", "Nokia", "Apple", "HTC", "Sony", "Blackberry"]

然后你可以这样做:

["Samsung", "Nokia", "Apple", "HTC", "Sony", "Blackberry"].each do |manufacturer_name|
  Category.create(name: manufacturer_name)
end

然后你的数据库中有六个类别

Category.count # returns 6

答案 1 :(得分:0)

class Category < ActiveRecord::Base
  has_many :products


 url ="http://www.ebay.in/cat/mobiles"
 doc = Nokogiri::HTML(open(url))
 name = doc.css("#brand .nav-tabs-m a")

 name.each do |category_name|
   name = Nokogiri::HTML(category_name.content).text
   if Category.find_by_name(name).nil?
     Category.create(:name => name)
  end
 end