por Ariel Juodziukynas
Slides: https://tinyurl.com/formsonrailsUn formulario puede tener más de un botón para enviarlo.
El valor del botón presionado se envía en los parámetros del request.
Los diferentes botones pueden tener distinto "action" (url) y "method" (GET|POST|PATCH|DELETE) independiente del form.
Los inputs no necesitan ser hijos de un formulario.
Se pueden asociar mediante ids y el atributo `form`.
Permiten definir métodos y templates específicos del builder sin modificar la vista.
Un formulario puede crear un objeto y objectos asociados en un mismo request.
Sirve tento para relaciones uno-a-uno y uno-a-muchos.
Para relaciones uno-a-uno:
{
user: {
address_attributes: {
street: 'Calle Falsa 123',
city: 'Springfield'
}
}
}
# user[address_attributes][street]=Calle+Falsa+123&user[address_attributes][city]=Springfield
Para relaciones uno-a-muchos:
{
user: {
pets_attributes: {
1: {
id: 1,
name: '',
breed: ''
},
2: {
id: 2,
name: '',
breed: '',
:_destroy => 1
},
3: {
# hashes sin atributo "id" para crear nuevos objetos
name: '',
breed: ''
}
}
}
}
# user[pets_attributes][1][id]=1&...
Agrega métodos al modelo para asignar attributos de objectos asociados.
Se usa dentro de uno form para generar un FormBuilder para otro object.
Hay que permitir los parámetros de acuerdo a la convención.
Agregar/quitar fields usando JavaScript.
Hay varias gemas para simplificar esto.
Preguntas?