2009-08-05 9 views
0

J'ai un formulaire que j'ai besoin d'afficher pour une table qui a une relation avec quelques autres tables. Par exemple, j'ai une table "cas" (pensez, cas d'investigateur), qui a un seul demandeur et has_one client.Création de formulaires pour les données relationnelles dans Rails

Je voudrais que le formulaire affiche les champs à remplir pour les données de cas, les données client et les données de demandeur. Y at-il un moyen facile de faire de sorte que quand il est soumis, il serait aussi simple que:

case = Case.new(params[:case]) 
case.save 

Comme il serait si je ne faisais que la présentation et l'enregistrement d'une forme uniquement pour les données de cas?

Répondre

0

On dirait que vous recherchez la méthode accepts_nested_attributes_for de activerecord. Vous aurez besoin de façonner votre formulaire en utilisant

- form.fields_for :claimant do |claimant_form| 
    = claimant_form.text_field :name 

Vous trouverez beaucoup plus d'informations dans Ryan Daigle's blog post

+0

Exactement ce que je cherchais! Je vous remercie! – intargc

0

Je ne crois pas qu'il existe un moyen d'appeler case.save et ça marchera.

Pour créer le formulaire, utilisez l'option fields_for. http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#M001605

fields_for vous permet d'ajouter des champs qui sont stockés dans différentes variables POST, donc si vous configurez les champs correctement puis dans votre nouvelle méthode que vous pourriez potentiellement faire quelque chose comme ceci:

claimant = Claimant.new(params[:claimant]) 
claimant.save 

qui n » est pas t terriblement plus compliqué.

+0

Eh bien, je sais que vous pouvez remplir un objet relationnel ensemble comme ceci: cas = Case.new case.claimant = Claimant.new # Remplissez cas et informations demandeur case.save Et va sauver le cas et les choses du demandeur dans la base de données correctement ... Je n'étais pas sûr si vous pouviez le faire avec les trucs params d'un formulaire. Je suppose que non. Merci! – intargc

0

Voir mon complex-form-examples sur la création de formes imbriquées multi-modèle. Cela a été mis à jour pour fonctionner avec Rails 2.3 accepts_nested_attributes_for de Rails.

Il vous permet d'imbriquer les associations sous params[:case] comme vous le souhaitez. Lorsque vous appelez case.save tout le reste sera également enregistré.

Questions connexes