Rails - динамически строить глубоко вложенные объекты (Cocoon / nested_form)

В настоящее время у меня сложная форма с глубоким вложением, и я используюКокон драгоценный камень для динамического добавления разделов по мере необходимости (например, если пользователь хочет добавить другое транспортное средство в форму продажи). Код выглядит так:


     "sale_vehicles/form", :locals => {:f => sale_vehicles_builder, :form_actions_visible => false} %>    


     'sale_vehicles/form', :render_options => {:locals => {:form_actions_visible => 'false', :show_features => true, :fieldset_label => 'Vehicle Details'}}, :class => 'btn' %>

Это очень хорошо работает для первого уровня вложенности -sale_vehicle объект правильно построен Cocoon, и форма отображается как ожидалось.

Проблема возникает, когда есть другой уровень вложенности -sale_vehicle частично выглядит так:


     "vehicles/form", :locals => {:f => vehicle_builder, :f_parent => f, :form_actions_visible => false, :show_features => true, :fieldset_label => 'Vehicle Details'} %>

Частичное дляvehicle отображается без полей, потому что нетsale_vehicle.vehicle Объект был построен.

Таким образом, мне нужно построить вложенный объект вместе с основным объектом (в настоящее время Cocoon не создает вложенные объекты), но как лучше это сделать? Есть ли способ выбрать вложенные формы из вспомогательного кода, чтобы их можно было построить?

В настоящее время Cocoon создает основной объект следующим образом:

if  instance.collection?
    f.object.send(association).build
else
    f.object.send("build_#{association}")
end

Если бы я мог сделать что-то вроде следующего, это было бы хорошо и просто, но яЯ не уверен, как получитьf.children Есть ли способ получить доступ к построителям вложенных форм из родительского конструктора форм?

f.children.each do |child|
    child.object.build
end

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

Спасибо!

РЕДАКТИРОВАТЬ: Вероятно, стоит упомянуть, что этот вопрос, кажется, имеет отношение как к драгоценному камню Кокон, упомянутых выше, а также Райан Бейтс nested_form драгоценный камень.Выпуск № 91 поскольку камень Кокон, похоже, та же проблема, что и этот, но обходной путь, предложенный dnagir (делегирование построения объектов), не идеален в этой ситуации, так как это вызовет проблемы в других формах.

Ответы на вопрос(1)

Ваш ответ на вопрос