以前の人の助けを借りて、ネストされたハッシュを単一の列にシリアライズする方法があります。私は複数のレベルでフォームフィールドを生成し、フィールドの値を文字列に戻すことができましたが、ハッシュのさまざまなレベルを保持することができません。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 %>
私の例では、最終的なハッシュ文字列は、2つのカテゴリのデータを取り、次のように見える必要があります文字列が割り当てられると、カテゴリは次のようになります。
{"0" => {"Active"=>"yes", "totalproducts"=>"100", "segment"=>"Premium"}, "1" => "Active"=>"yes", "totalproducts"=>"190"}}
ただし、文字列は次の形式で来ている:
{"Active"=>"yes", "totalproducts"=>"100", "segment"=>"Premium", "Active"=>"yes", "totalproducts"=>"190"}
は別の一つのカテゴリの属性を区別し、メインハッシュ内の2つの別々のハッシュを持ってする方法はありますか?今はすべてが単一のレベルに平坦化されます。これは、入力フィールドの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] [アクティブ]です。
これにアプローチする方法についてのご意見はありますか?