Ruby on rails 如何在我的应用程序中输入比赛结果?

Ruby on rails 如何在我的应用程序中输入比赛结果?,ruby-on-rails,Ruby On Rails,我的应用程序中有三个模型:运动员、比赛和成绩。一名运动员有许多结果,一场比赛有许多结果,一个结果属于一名运动员和一场比赛。每场比赛有12个结果 作为一名Rails开发新手,我很难理解如何创建web表单以输入12项比赛结果。我应该将结果作为一个单独的资源保存,还是将它们嵌套在Races下?在我的控制器中,我会在新操作下创建12个结果对象实例吗?如何为每个实例提交适当的race_id 如果你能帮我澄清我对这个问题的看法,并为我指出正确的方向,我将不胜感激 我相信有几种方法可以做到这一点。当然,您可以

我的应用程序中有三个模型:运动员、比赛和成绩。一名运动员有许多结果,一场比赛有许多结果,一个结果属于一名运动员和一场比赛。每场比赛有12个结果

作为一名Rails开发新手,我很难理解如何创建web表单以输入12项比赛结果。我应该将结果作为一个单独的资源保存,还是将它们嵌套在Races下?在我的控制器中,我会在新操作下创建12个结果对象实例吗?如何为每个实例提交适当的race_id


如果你能帮我澄清我对这个问题的看法,并为我指出正确的方向,我将不胜感激

我相信有几种方法可以做到这一点。当然,您可以在
比赛
下嵌套
结果
,但接下来的问题是您是否在创建
结果
的同时创建他们的
比赛
(这是值得考虑的,因为你需要知道如何将你的
结果
与你的
比赛
,例如,每个
结果
表单是否都有一个
比赛id
作为隐藏字段?如果是这样的话,
比赛
可能已经存在)。但在任何一种情况下,这都可能是12个
Result
表单,其中
Result.new
作为对象。

如果结果具有唯一且自动生成的ID,则无需嵌套结果,但如果您认为这样可以使应用程序更易于使用或编程,则可以嵌套结果

您的web表单可能应基于输入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 阶级竞赛 有很多:结果 为:结果接受\u嵌套的\u属性\u 结束 只需在update语句中传递属性:

Race.find(params[:id]).update_attributes params[:race] Race.find(params[:id])。更新属性params[:Race]
比赛将首先创建,然后再添加结果。在这种情况下,每个结果表单是否都有一个比赛id作为隐藏字段?我想这就是我的问题所在。我很难理解如何将这两个模型精确地结合在一起。每个结果表单都有一个
比赛id
。因此,当你打开
编辑
表单f时或者一个
Race
,您可以为一个新的
结果
呈现12个分部实例,并传入
@Race
对象,然后该分部可以在名为
Race\u id
的隐藏字段中使用该对象的
id