2011-12-13 8 views
0

Благодаря помощи людей ранее я получаю возможность сериализации вложенного хэша в один столбец. Хотя мне удалось сформировать поля формы на нескольких уровнях и вернуть значения полей в строку, я не могу сохранить разные уровни для хэша.Поддержание вложенных уровней при сериализации поля, сгенерированного с помощью полей_поля

Мой хэш выглядит следующим образом:

Мой код выглядит следующим образом:

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

Есть ли способ, чтобы дифференцировать атрибуты одной категории от другой и иметь два отдельных хэшей в основной хэш? Сейчас все выравнивается до одного уровня. Это очевидно в том, как генерируются идентификаторы и имена для полей ввода. Смотрите пример ниже:

<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] [Active] и продукты [категория] [1] [Активный].

Любые предложения о том, как подойти к этому?

ответ

0

На всякий случай кто-то наткнулся на этот вопрос, имеющий аналогичную проблему, я хотел поделиться окончательным решением.

Вы должны использовать text_field_tag, select_tag и т. Д. Вместо fields_for helper. Используйте цикл (.each_with_index do | key, index |) для итерации через хэш. Затем в основном генерируйте полное имя для каждого поля в формате «product_categories_0_active».

Я попытаюсь написать учебник или блог об этом, как только я выйду из леса в своем проекте, но я думаю, что большинство людей это выяснит отсюда.

Надеюсь, это поможет.