在序列化使用fields_for生成的字段时,维护嵌套级别



多亏了前面人们的帮助,我掌握了如何将嵌套散列序列化到单个列中的窍门。虽然我能够在多个级别生成表单字段并将字段的值返回到字符串中,但我无法保留哈希的不同级别。

我的哈希值如下所示:

我的代码如下:

 <% 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 %>

我的示例中的最后一个哈希字符串获取两个类别的数据,并且当它被分配给时必须与以下字符串相似:

{"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" /> 

我真正想要的是产品[categories][0][Active]和产品[categories][1][Active]。

有什么建议吗?

为了防止有人遇到类似的问题,我想分享一下最终的解决方案。

你必须使用text_field_tag, select_tag等代替fields_for助手。使用循环(。Each_with_index do |key, index|)来遍历你的散列。然后基本上以" product_categores_0_active "的格式为每个字段生成一个完全限定的名称。

一旦我完成了我的项目,我会尝试写一篇教程或博客,但我认为大多数人会从这里弄清楚。

希望能有所帮助。

相关内容

  • 没有找到相关文章

最新更新