Все,
Хакунин был на деньгах.Я звонил по частям в нескольких местах.Второе место было в моем вспомогательном методе "link_to_add_fields".Я использую это для добавления полей, используя javascript.
Метод выглядел следующим образом:
# generates add fields on a dynamic form
def link_to_add_fields(name, f, association, locals={})
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(name, "#", :class => "dynamic_add", 'data-association' => "#{association}",
'data-content' => "#{fields}")
end
Обратите внимание, что это не позволяет передавать любые локальные объекты в метод рендеринга.Я изменил это так:
# generates add fields on a dynamic form
def link_to_add_fields(name, f, association, locals={})
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", locals.merge!(:f => builder))
end
link_to(name, "#", :class => "dynamic_add", 'data-association' => "#{association}",
'data-content' => "#{fields}")
end
Теперь мой вызов link_to_add_fields в моей части _form выглядит следующим образом:
<%= link_to_add_fields "Add a comment", f, :comments, :tester => true %>
... и я могу динамически добавлять поля в мою форму И передаватьдополнительные местные жители.Надеюсь, это поможет кому-то еще.