0

我正在将 HTML 解析为一个数组,如下所示。我可以将数据放入数组,然后将数据推送到数据库中。数组数据的一行是:

{:address=>"6222 Lodgepole Dr", :members=>["Diana L Dillard", "Kemberly J Williams", "George S Williams Iii"]}

数据库结果为:

Master                 Neighbor                     Name

7545 XYZ Dr     --- - 8283 Southern Watch Pl    --- - - Diana L Dillard - Kemberly J Williams - George S Williams Iii

这些是我的问题:

  1. 如何让Address.create循环仅将数组中的第一个成员(在此示例Diana L Dillard中)插入“名称”字段而不是所有名称?理想情况下,我想为第一个字段创建一个字段,然后为所有其他字段创建另一个字段。
  2. 为什么我的数据中会插入这些破折号“---”?我不想要他们。

这是我当前的代码:

url = "XYZ"

doc = Nokogiri::HTML(open(url))

results = []

# parse .single tags
doc.css('.single').each do |single_div|

  res = {}
  res[:address] = single_div.at_css('span.address').text
  res[:members] = single_div.css('li.basic_info').collect{|el| el.text.strip}
  results << res
end

results.each do|address|
  puts "#{address}: #{members}"
  Address.create(:neighboradd => "#{address}", :master => '7545 XYZ Dr', :name => "{members}")
end
4

1 回答 1

0

这个

results.each do |address|
  puts "#{address}: #{members}"
  Address.create(
    :neighboradd => "#{address}",
    :master => '7545 XYZ Dr',
    :name => "{members}"
  )
end

应该是这样的

results.each do |res|
  puts "#{res[:address]}: #{res[:members]}"
  Address.create(
    :neighboradd => res[:address],
    :master => '7545 XYZ Dr',
    :name => res[:members].join(', ') # this should be "#{res[members]}"? (with "#")
  )
end

---是因为您将整个哈希用于:neighboradd.

如果您只想要第一个成员:

    :name => res[:members].first
于 2013-02-23T03:24:28.690 回答