ruby-on-rails – Rails 3.1 – :fields_for,:child_index不递
发布时间:2020-12-17 02:16:06 所属栏目:百科 来源:网络整理
导读:我有一个嵌套的属性形式与以下,我只是学习如何使用嵌套属性.我遇到的一个问题是child_index值没有递增.我根据控制器中的构建得到3个字段,但它们都有0或1,具体取决于设置的数字. 有关如何使其增加的任何想法? # in controller: 3.times {@item.assets.build}
我有一个嵌套的属性形式与以下,我只是学习如何使用嵌套属性.我遇到的一个问题是child_index值没有递增.我根据控制器中的构建得到3个字段,但它们都有0或1,具体取决于设置的数字.
有关如何使其增加的任何想法? # 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 %> 编辑: item[assets_attributes][0][asset] 而不是期望的: menu_item[assets_attributes][0][asset] menu_item[assets_attributes][1][asset] menu_item[assets_attributes][2][asset] 编辑#2: <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" /> 解决方法
通过Rails源查看,很明显,如果指定:child_index,则不会有自动增量.这是否是正确的行为是值得商榷的.如果在调用fields_for时完全省略:child_index,则应该获得所需的索引.
要为每个字段获取正确的标签,您可以使用一些JavaScript.如果您不喜欢,可以将文件编号设置为Asset类的属性. class Asset < AR attr_accessor :file_number end # in controller: 3.times {|n| @item.assets.build(:file_number => n) } <div id='files'> <%= f.fields_for :assets do |asset| %> <p> <%=asset.label :asset,"File ##{asset.file_number}" %> <%= asset.file_field :asset %> </p> <% end %> </div> <%= f.submit %> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |