ruby-on-rails – Rails 3.1 – :fields_for,:child_index不递增

ruby-on-rails – Rails 3.1 – :fields_for,:child_index不递增,第1张

概述我有一个嵌套的属性形式与以下,我只是学习如何使用嵌套属性.我遇到的一个问题是child_index值没有递增.我根据控制器中的构建得到3个字段,但它们都有0或1,具体取决于设置的数字. 有关如何使其增加的任何想法? # in controller: 3.times {@item.assets.build}<% number = 1 %><div id='files'> <%= f.fiel 我有一个嵌套的属性形式与以下,我只是学习如何使用嵌套属性.我遇到的一个问题是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 %>

编辑:
所以在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" />
解决方法 通过Rails源查看,很明显,如果指定:child_index,则不会有自动增量.这是否是正确的行为是值得商榷的.如果在调用fIElds_for时完全省略:child_index,则应该获得所需的索引.

要为每个字段获取正确的标签,您可以使用一些JavaScript.如果您不喜欢,可以将文件编号设置为Asset类的属性.

class Asset < AR  attr_accessor :file_numberend# 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 %>
总结

以上是内存溢出为你收集整理的ruby-on-rails – Rails 3.1 – :fields_for,:child_index不递增全部内容,希望文章能够帮你解决ruby-on-rails – Rails 3.1 – :fields_for,:child_index不递增所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1273759.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存