2013-03-12 32 views
0
我使用引入nokogiri抓住從網頁數據

創建多個記錄,到目前爲止,我可以節省一列模型循環在型號

def update_fixtures #rake task method 
Fixture.destroy_all 
get_fixtures.each {|match| Fixture.create(home_team: match)} 
end 

def get_fixtures # Get me all Home Teams 
doc = Nokogiri::HTML(open(FIXTURE_URL)) 
home_team = doc.css(".team-home.teams").map {|h| h.text.strip } 
end 

我想知道是保存最有效的方法在同一時間

因此,作爲一個例子2,3或4 columms我呼籲AWAY_TEAM另一列,我會畢業生數據以同樣的方式作爲主隊

away_team = doc.css(".team-away.teams").map {|a| a.text.strip } 

是明智的放下在get_fixtures方法中?然後添加到update_fixtures喜歡的東西

def update_fixtures #rake task method 
Fixture.destroy_all 
get_fixtures.each {|match| Fixture.create(home_team: match, away_team: match)} 
end 

嘗試此相同的數據被張貼到主客場columns.Which讀回我明白爲什麼(我認爲它是因爲比賽只抓住了HOME_TEAM後後數據?)。我如何能夠將主客隊的屬性與主隊一起傳遞?

這是非常新,所以提供的任何幫助表示讚賞

+0

爲什麼同樣的數據被公佈爲兩者兼而有之?在get_fixtures方法中,'home_team'和'away_team'變量具有不同的賦值,因此數據應該不同。 – 2013-03-12 14:46:54

+0

林不知道,所以我正在這個正確的方式嗎? (H)Man Utd(A)Manutd。我得到了主隊和客隊的相同數據。 – Richlewis 2013-03-12 14:48:19

回答

1

這是不正確的做法,因爲變量home_teamaway_team兩者都使用相同的通用match,因此你得到兩個相同的數據。

執行以下操作:

UPDATE:

你的模型:

attr_accessible :home_team, :away_team 

def update_fixtures #rake task method 
    Fixture.destroy_all 
    doc = Nokogiri::HTML(open(FIXTURE_URL)) 

    home_team = doc.css(".team-home.teams").map {|h| h.text.strip } 
    away_team = doc.css(".team-away.teams").map {|a| a.text.strip } 

    Fixture.create(home_team: home_team, away_team: away_team) 
end 
+0

是有道理的,把它分開,並讓每一個單獨的方法,我想我是想太聰明,保持簡單,非常感謝 – Richlewis 2013-03-12 14:57:42

+0

嗯只有客隊更新現在 – Richlewis 2013-03-12 15:04:25

+0

任何想法,爲什麼它只會寫到一列 – Richlewis 2013-03-12 15:10:46