嵌套属性并将id作为不同参数提交

时间:2010-12-23 21:34:23

标签: ruby-on-rails

我有3个模特,比赛,结果和运动员。 Atletes有很多结果,种族有很多结果,而结果属于运动员和种族。我还将结果作为Races的嵌套属性。这是我的形式部分用于将结果添加到现有种族。

<%= form_for(@race) do |f| %>

<div class="field">
  <%= f.label :name %><br />
  <%= f.text_field :name %>
</div>
<div class="field">
  <%= f.label :date %><br />
  <%= f.datetime_select :date %>
</div>

<% f.fields_for :results do |r| %>
<div class="field">
 <%= r.label :position %><br />
 <%= r.text_field :position %>
 <%= r.label :athlete_id %><br />
 <%= r.text_field :athlete_id %>
</div>
<% end %>

正如你所看到的,我必须手动输入每个运动员的位置,以及他们各自的ID,这是一个真正的痛苦。我想把这个位置作为一个隐藏的领域,只需输入运动员的名字而不是id整数。当我在文本输入中键入运动员姓名时,如何将其作为athlete_id输入数据库?

2 个答案:

答案 0 :(得分:0)

运动员是否已经存在?如果是这样,只需对价值为collection_select的所有运动员进行athlete_id,并且文字是运动员的名字。然后你可以选择你想要的运动员。

答案 1 :(得分:0)

我会考虑使用rails auto_complete plugin动态选择你想要选择的运动员。然后,您可以将选定的运动员分配到隐藏的区域,以确保ID关联正确发生,但仍然允许最终用户键入运动员的名称,并让潜在运动员列出您想要的范围。