我的应用程序中有三个模型:运动员,种族和结果。运动员有很多结果,比赛有很多结果,结果属于运动员和比赛。每场比赛都有12个结果。
作为Rails的开发者,我无法理解如何创建用于输入12个比赛结果的Web表单。我应该将结果作为单独的资源维护,还是将它们嵌套在Races下?在我的控制器中,我会在New操作下创建12个结果对象的实例吗?如何为每个实例提交相应的race_id?
如果你能帮助我澄清我对这个问题的看法,并指出我正确的方向,我将不胜感激!
答案 0 :(得分: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
只需在更新语句中传递属性:
Race.find(params[:id]).update_attributes params[:race]
答案 1 :(得分:0)
我确信有几种方法可以解决这个问题。您当然可以在Results
下嵌套Races
,但随后问题是您是否与Results
同时创建Race
(这是值得思考,因为您需要知道如何将Results
绑定到Race
,例如每个Result
表单是否有race_id
作为隐藏字段?如果是,{ {1}}可能已经存在了)。但在任何一种情况下,这可能是以Race
为对象的12 Result
个形式。