2013-02-23 76 views
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 

回答

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 
+0

谢谢。现在看起来很简单。我曾尝试过。首先但不正确,因为我没有使用'res' – 2013-02-23 04:14:55