Динамическое добавление вложенных форм - рекурсивный рендеринг частичных рельсов

Я следую примеру Railscast для формы вложенной модели. Динамическое добавление возможно благодаря этому вспомогательному методу:

def link_to_add_fields(name, f, association)
    new_object = f.object.send(association).klass.new
    id = new_object.object_id
    fields = f.fields_for(association, new_object, child_index: id) do |builder|
      render(association.to_s.singularize + "_fields", f: builder)
    end
    link_to(name, '#', class: "add_fields", data: {id: id, fields: fields.gsub("\n", "")})
  end 

Я вызываю этот метод для ассоциации Room, тем самым визуализируя партиал _room_fields. Все это прекрасно работает. Проблема в том, что я хочу отобразить другой тег fields_for с другим партиалом внутри этого партиала.

_room_fields.html.haml:

= f.input :dorm
= f.fields_for :beds do |builder|
  =render 'bed_fields', f: builder

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

Любые идеи будут высоко оценены. Спасибо!


person Uri Klar    schedule 05.11.2013    source источник


Ответы (1)


Ок, разобрался с проблемой. Второй вложенный фрагмент не отображался, потому что я не создал экземпляр нового объекта Bed.

person Uri Klar    schedule 05.11.2013