我有一个简单的Rails表单,它使用条件build_association(如果还没有关联的父级)来包含text_field来编辑父级。如果要添加父级的新记录,这将非常有用。这样做的问题是,如果父项已经存在,如果更新了text_field,那么它将针对影响许多子项的父记录进行更改。如果无论父关联是否已存在,都会调用build_association,那么将不断创建新的重复父项。
我试图理解如果用户键入一个不熟悉的名称,我可以使用build_association和fields_for向数据库添加新的父级,但如果名称与现有的父级名称匹配,则将父级设置为现有记录。 (如果我能让这部分工作正常,下一步就是添加自动完成功能。)代码如下:
<%= form_for @sermon, :html => { :multipart => true } do |f| %>
<div class="field">
<%= f.label :title %><br />
<%= f.text_field :title %>
</div>
<div class="field">
<%= f.label :date %><br />
<%= f.text_field :date %>
</div>
<div>
<% @sermon.build_speaker unless @sermon.speaker %>
<%= f.fields_for :speaker do |g| %>
<%= g.label :name, "Speaker name:" %><br />
<%= g.text_field :name %>
<%= g.submit %>
<% end %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>