2010-12-23 70 views
0

我在我的應用程序中有三個模型:運動員,比賽和結果。運動員有很多成績,比賽有很多成績,而成績屬於運動員和比賽。每場比賽都有12個結果。如何在我的應用中輸入比賽結果?

作爲一名Rails開發人員,我無法理解如何創建用於輸入12種比賽結果的Web表單。我應該維護結果作爲一個單獨的資源,或嵌套他們在賽事?在我的控制器中,我會在New操作下創建12個結果對象的實例嗎?我如何爲每個實例提交適當的race_id?

如果你能幫我澄清我對這個問題的想法,並指出我在正確的方向,將不勝感激!

回答

0

我相信有幾種方法可以解決這個問題。您當然可以將Results嵌套在Races下,但是這會成爲您是否在創建Results時與其Race同時創建的問題(值得考慮,因爲您需要知道如何將Results與您的Race ,例如每個Result表格是否有一個race_id作爲隱藏字段?如果是的話Race可能需要已經存在)。但在任何情況下,這可能是12 Result表格與Result.new作爲對象。

+0

將首先創建比賽,然後結果將在稍後添加。在這種情況下,每個Result表單都會有一個race_id作爲隱藏字段?我認爲這是我的問題所在。我很難理解如何將這兩個模型結合在一起。 – jktress 2010-12-23 18:41:25

1

如果您的結果具有唯一且自動生成的ID,則不需要嵌套結果,但如果您認爲它使得您的應用程序更易於使用或編程,則可以這樣做。

您的網頁表單應該基於輸入12位運動員的用例,因爲他們排名爲單一比賽。這意味着你可以使用多個HTML輸入每個結果:

 
<input type="hidden" name="race[results_attributes][][rank]" value="1" /> 
<input type="text" name="race[results_attributes][][athlete_id]" /> 
<input type="hidden" name="race[results_attributes][][rank]" value="2" /> 
<input type="text" name="race[results_attributes][][athlete_id]" /> 

然後,您可以修改你的比賽模式,接受輸入的結果:

 
class Race 
    has_many :results 
    accepts_nested_attributes_for :results 
end 

,簡單地通過屬性在UPDATE語句:

 
Race.find(params[:id]).update_attributes params[:race] 
相關問題