4
我有一個嵌套的屬性形式與以下,我剛剛學習如何使用嵌套的屬性。我遇到的一個問題是child_index值沒有增加。根據控制器中的內部版本,我獲得了3個字段,但它們都取0或1,具體取決於設置的編號。Rails的3.1 - :fields_for,:child_index不遞增
有關如何讓它增加的任何想法?
# in controller: 3.times {@item.assets.build}
<% number = 1 %>
<div id='files'>
<%= f.fields_for :assets, :child_index => number do |asset| %>
<p>
number:<%= number %><br />
<%=asset.label :asset, "File ##{number += 1}" %>
<%= asset.file_field :asset %>
</p>
<% end %>
</div>
<%= f.submit %>
編輯: 所以在HTML中,所有的問題都有類似的形式:
item[assets_attributes][0][asset]
,而不是所期望的:
menu_item[assets_attributes][0][asset]
menu_item[assets_attributes][1][asset]
menu_item[assets_attributes][2][asset]
編輯#2: 所以翻翻源代碼,我看到以下內容,並且想知道rails是否應該進行一些自動交換,可能這不會發生;
<input id="item_assets_attributes_0_asset" name="item[assets_attributes][0][asset]" type="file" />
<input id="item_assets_attributes_0_id" name="item[assets_attributes][0][id]" type="hidden" value="1" />
了類似的問題,我不得不添加accepts_nested_attributes_for模型,看到https://github.com/rails/rails/blob/75366cb82dc6fa4b3dada2a450dda18496f3eddd/actionpack/lib/action_view/helpers/form_helper.rb#L1253 – poseid