我有文章,有很多文章资产。相当简单。在文章的编辑表单上,我只想添加新的文章资产。我不需要编辑当前的,所以我创建了一个这样的部分:
<% f.fields_for :article_assets, article_asset do |builder| -%>
<div class="article_asset">
<%= builder.file_field :image %>
<%= builder.check_box :is_flagged, :class => "isFlagged" %> isFlagged
</div>
<% end -%>
没有集合,因为我一次只需要一个对象,并且不需要来自现有文章资产的数据。以 edit.erb 的形式,我呈现以下内容:
<%= render :partial => 'article_asset', :locals => {:f => f}, :object => ArticleAsset.new %>
这使得一个新的文章资产出现,我可以添加信息,到目前为止一切都很酷。重要的是该字段获取article[article_assets_attributes][0][is_flagged]的名称形式。一切都很好,因为这也会将总是在 rails 中带有复选框的隐藏字段分组到其余字段。然后我有一个执行此操作的“添加项目”链接:
page.insert_html :bottom, :article_assets_fields, :partial => "article_asset", :locals => {:f => f}, :object => ArticleAsset.new
正如预期的那样,单击此链接会在创建的字段下提供一个新字段,其名称形式为article[article_assets_attributes][1][is_flagged]的复选框字段。加分,完美!然而,添加另一个具有相同链接的表单也会给出相同的表单(标识符也为 1,重复),这使得提交表单只有 2 个项目而不是 3 个。有谁知道为什么会发生这种情况以及我能做些什么解决这个问题?
Ruby on Rails 2.3.11