Todos hemos visto el brillante complex forms railscast donde Ryan Bates explica cómo agregar o eliminar dinámicamente objetos anidados dentro del formulario de objetos padres utilizando Javascript.Cómo agregar y eliminar campos de modelos anidados dinámicamente con Haml y Formtastic
¿Alguien tiene alguna idea sobre cómo estos métodos deben modificarse para poder trabajar con Haml Formtastic?
Para añadir un poco de contexto aquí es una versión simplificada del problema que estoy enfrentando actualmente:
forma # Maestro (que ha anidado formas de materia) [desde mi aplicación]
- semantic_form_for(@teacher) do |form|
- form.inputs do
= form.input :first_name
= form.input :surname
= form.input :city
= render 'subject_fields', :form => form
= link_to_add_fields "Add Subject", form, :subjects
# individuo sujeto formar parcial [desde mi aplicación]
- form.fields_for :subjects do |ff|
#subject_field
= ff.input :name
= ff.input :exam
= ff.input :level
= ff.hidden_field :_destroy
= link_to_remove_fields "Remove Subject", ff
# aplicación auxiliar (directamente desde Railscasts)
def link_to_remove_fields(name, f)
f.hidden_field(:_destroy) + link_to_function(name, "remove_fields(this)")
end
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, h("add_fields(this, \"#{association}\", \"#{escape_javascript(fields)} \")"))
end
# application.js (directamente desde Railscasts)
function remove_fields(link) {
$(link).previous("input[type=hidden]").value = "1";
$(link).up(".fields").hide();
}
function add_fields(link, association, content) {
var new_id = new Date().getTime();
var regexp = new RegExp("new_" + association, "g")
$(link).up().insert({
before: content.replace(regexp, new_id)
});
}
El problema con la aplicación parece estar relacionado con los métodos JavaScript - el árbol DOM de una forma Formtastic difiere enormemente de una forma carriles regulares.
He visto esta pregunta en línea algunas veces, pero todavía no he encontrado una respuesta. ¡Ahora sabes que la ayuda será apreciada por más que por mí!
Jack
Se puede publicar la salida HTML de su 'fields_for: subjects'? – nfm