感谢前人提供的帮助,我对如何将嵌套哈希序列化为单个列感到兴奋。虽然我能够在多个级别生成表单字段并将字段的值返回到字符串,但我无法保留散列的不同级别。
我的哈希看起来如下:
我的代码如下:
<% categoryvalue.each do |categoryproperty, categorypropertyvalue| %>
<div>
<%= f.fields_for :categories, categoryproperty do |categoryattribs| %>
<%= categoryattribs.label categoryproperty %> <br/>
<%= categoryattribs.text_field categoryproperty, :value => categorypropertyvalue %> <br/>
<% end %>
</div>
<% end %>
我的示例中的最后一个哈希字符串获取两个类别的数据,并且在分配给它时必须类似于以下字符串:categories应如下所示:
{"0" => {"Active"=>"yes", "totalproducts"=>"100", "segment"=>"Premium"}, "1" => "Active"=>"yes", "totalproducts"=>"190"}}
但是,字符串的格式如下:
{"Active"=>"yes", "totalproducts"=>"100", "segment"=>"Premium", "Active"=>"yes", "totalproducts"=>"190"}
有没有办法区分一个类别与另一个类别的属性,并在主哈希中有两个单独的哈希值?现在一切都变得扁平化了。这在输入字段的id和名称的生成方式中很明显。请参阅以下示例:
<input id="product_categories_Active" name="product[categories][Active]" size="30" type="text" value="%" />
<input id="product_categories_Active" name="product[categories][Active]" size="30" type="text" value="lbs" />
我真正想要的是产品[类别] [0] [有效]和产品[类别] [1] [有效]。
有关如何处理此事的任何建议?
答案 0 :(得分:0)
万一有人在这个问题上遇到类似的问题,我想分享最终解决方案。
您必须使用text_field_tag,select_tag等而不是fields_for帮助程序。使用循环(.each_with_index do | key,index |)迭代哈希。然后基本上以格式&#34; product_categories_0_active&#34;为每个字段生成一个完全限定的名称。
一旦我在项目中走出困境,我会尝试写一个教程或博客,但我想大多数人都会从这里想出来。
希望它有所帮助。