Création de formulaires pour des données relationnelles dans Rails
-
22-07-2019 - |
Question
J'ai un formulaire à afficher pour une table ayant une relation avec quelques autres tables. Par exemple, j’ai un tableau "Cases" (pensez, cas d’enquêteur), qui a un demandeur et un client.
Je souhaite que le formulaire affiche les champs à renseigner pour les données de dossier, les données client et les données de demandeur. Existe-t-il un moyen simple de le faire pour que, une fois soumis, ce soit aussi simple que:
case = Case.new(params[:case])
case.save
Comme ce serait le cas si je ne faisais que soumettre et enregistrer un formulaire pour les données de cas uniquement?
La solution
On dirait que vous recherchez la méthode includes_nested_attributes_for
d’Activerecord. Vous devrez créer votre formulaire à l'aide de
- form.fields_for :claimant do |claimant_form|
= claimant_form.text_field :name
Vous trouverez de plus amples informations dans Article de blog de Ryan Daigle
Autres conseils
Je ne crois pas qu'il soit possible d'appeler simplement case.save et que ça va marcher.
Pour créer le formulaire, examinez l'utilisation de fields_for. http://api.rubyonrails.org/classes/ActionView/Helpers/ FormHelper.html # M001605
fields_for vous permet d'ajouter des champs stockés dans différentes variables POST. Par conséquent, si vous configurez les champs correctement, vous pourrez éventuellement, dans votre nouvelle méthode, procéder de la manière suivante:
claimant = Claimant.new(params[:claimant])
claimant.save
Ce qui n'est pas terriblement plus compliqué.
Voir mes exemples de formulaires complexes sur la création de plusieurs éléments imbriqués. -modèles. Cela a été mis à jour pour fonctionner avec le Rois 2.3 accepte_attributs_autorités_pour
.
Il vous permet d'imbriquer les associations sous params [: case]
comme vous le souhaitez. Lorsque vous appelez case.save
, tout le reste sera également sauvegardé.