多くのスロットを持つカバー モデルがあります。#196 Railcastと#197 Railcastに続いてフォームを作成しました。フォームは作成には問題なく機能しますが、カバー (特に子スロット) を更新したい場合、更新されません。問題は、スロットのフィールドの html name 属性に適切な ID が含まれていないことです。代わりに、スロットのフィールドは常に 0 から始まり、増加しているようです。関連するコードは次のとおりです。
_form.html.erb:
<%= form_for(@cover) do |f| %>
...
<%= f.fields_for :slots do |builder| %>
<%= render "slot_fields", :f => builder %>
<% end %>
...
<% end %>
_slot_fields.html.erb:
<div class="fields">
<p>
<div class="field">
<%= f.label :width %>
<%= f.number_field :width %>
</div>
...
出力html:
<p>
<div class="field">
<label for="cover_slots_attributes_0_width">Width</label>
<input id="cover_slots_attributes_0_width" name="cover[slots_attributes][0][width]" type="number" value="50" />
</div>
ただし、スロット ID は 3 です
前もって感謝します