Crear formularios para datos relacionales en Rails
-
22-07-2019 - |
Pregunta
Tengo un formulario que necesito mostrar para una tabla que tiene una relación con un par de otras tablas. Por ejemplo, tengo una tabla '' casos '' (piense, caso del investigador), ese has_one reclamante y has_one cliente.
Me gustaría que el formulario muestre los campos para completar los datos del caso, los datos del cliente y los datos del reclamante. ¿Hay una manera fácil de hacer esto para que cuando se envíe sea tan simple como:
case = Case.new(params[:case])
case.save
¿Cómo sería si solo estuviera enviando y guardando un formulario solo para los datos del caso?
Solución
Parece que está buscando el método accept_nested_attributes_for
de activerecord. Necesitarás crear tu formulario usando
- form.fields_for :claimant do |claimant_form|
= claimant_form.text_field :name
Puede encontrar mucha más información en entrada de blog de Ryan Daigle
Otros consejos
No creo que haya una manera de llamar a case.save y funcionará.
Para hacer el formulario, busque usando fields_for. http://api.rubyonrails.org/classes/ActionView/Helpers/ FormHelper.html # M001605
fields_for le permite agregar campos que están almacenados en diferentes variables POST, por lo que si configura los campos correctamente, en su nuevo método podría hacer algo como esto:
claimant = Claimant.new(params[:claimant])
claimant.save
Que no es terriblemente más complicado.
Vea mis complex-form-examples sobre la creación de múltiples anidados -modelo de formas. Esto se ha actualizado para que funcione con accept_nested_attributes_for
de Rails 2.3.
Le permite anidar todas las asociaciones en params [: case]
como desee. Cuando llame a case.save
, todo lo demás también se guardará.