Agregar dinámicamente formularios anidados a un formulario ActiveModel :: Model

La semana pasada hablamos sobre cómo crear registros anidados usando un formulario ActiveModel :: Model. El problema con el resultado final de mi ejemplo es que solo podríamos agregar un único registro de contacto, mientras que necesitamos poder agregar arbitrariamente muchos. Lo que necesitamos aquí es un enlace o un botón que agregará los campos para otro contacto cada vez que se haga clic.

Hay un gran Railscast dedicado a esto, y casi nos funciona excepto por un detalle. Mira la primera línea de la link_to_add_fieldsfunción:

def link_to_add_fields(name, f, association)
new_object
= f.object.class.reflect_on_association(association).klass.new
fields
= f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
render
(association.to_s.singularize + "_fields", :f => builder)
end
link_to_function
(name, "add_fields(this, "#{association}""