2013-02-23 78 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