J'essaie d'enregistrer beaucoup nouveaux objets sous une forme à préexistant objet parent.Quelqu'un sait comment enregistrer de nombreux objets dans un formulaire?
- form_for :parent_object do |f|
Ceci est le début de mon formulaire. Et puis à l'intérieur, je le ferais:
- 2.times do
- fields_for :child_object do |f|
Maintenant, si je devais sauver cela, il viderait comme ParentObject_Controller l'action de mise à jour qui échouera parce que mise à jour ne permet pas d'identifier de nouveaux objets.
Donc, si je voulais rendre l'action appropriée Enregistrer, je dois mettre en place comme ceci:
- form_for [@parent_object, @child_object] do |f|
- 2.times do
- fields_for :child_object do |f|
Cette forme rend alors l'action Enregistrer, mais seulement enregistre le dernier child_object.
Je voudrais vous montrer mon contrôleur, mais il n'y a guère de point parce que c'est dévastateur erroné.
Ma question est, comment voulez-vous sauver beaucoup de nouveaux objets sous une forme à un objet parent préexistante?
J'ai beaucoup étudié le travail de Ryan Bate, et beaucoup d'autres blogs et autres publications à ce sujet. Rien ne semble vraiment pointer vers la création spécifique de nouveaux objets enfants pour un objet parent préexistant.
Mise à jour:
Je suis sous l'impression que je dois passer les actions de contrôleur de parent_object pour def update
.
elsif params[:parent_object][:child_object]
@child_object = Child_Object.new(params[:child_object])
if @child_object.valid? && @parent_object.referrals << @child_object
redirect_to new_parent_object_child_object_path(@parent_object)
else
render :action => :new
end
Débogueur, si je je place un débogueur à la racine de def update
, et j'écris:
>> params[:parent_object]
#=> nil
Intéressant! Cela signifie que quand child_object est envoyé au contrôleur parent_object, les params ne sont pas remplis pour cela. Haha, aucune idée de ce qu'il faut faire à ce sujet ..
Malheureusement, ce code ne fonctionne pas, c'était juste ma tentative de se rapprocher. ;)
J'ai déjà une URL explicite pour cela. '--form_for [@parent_object, @child_object: url => parent_object_child_object_path fait | f |' Pourquoi créer un chemin polymorphe? Vous dites que cela permet la possibilité d'enregistrer plusieurs objets dans un formulaire? – Trip
Hmm .. Si je devais créer une définition personnalisée pour parent_object, qu'est-ce que cela inclurait? Merci pour votre aide, j'ai été bloqué sur cela pendant des jours. : D – Trip
Eh bien, peut-être que ces exemples ne sont pas exactement ce dont vous avez besoin. Quels screencasts RB avez-vous essayé? Celui-ci: [Nested Model Form] (http://railscasts.com/episodes/196-nested-model-form-part-1)? Il semble décrire exactement ce que vous voulez. – Matt