簡體   English   中英

在序列化使用fields_for生成的字段時,保持嵌套級別

[英]Maintaining the nested levels while serializing a field generated using 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 %>

在我的示例中,最終的哈希字符串采用兩個類別的數據,並且在將其分配給: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" /> 

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

關於如何處理此問題的任何建議?

以防萬一有人偶然遇到類似問題,我想分享最終的解決方案。

您必須使用text_field_tag,select_tag等,而不是fields_for助手。 使用循環(.each_with_index do | key,index |)遍歷哈希。 然后基本上為每個字段生成格式為“ product_categories_0_active”的完全限定名稱。

一旦脫離項目范圍,我將嘗試為此編寫教程或博客,但我想大多數人都會從這里弄清楚。

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM