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?

¿Fue útil?

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á.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top