Have a look at http://media.pragprog.com/titles/fr_arr/multiple_models_one_form.pdf
That's a great pre-2.3 non-ajax way to do it, and you don't muck up your controller code in the process. Shoot another email if you have any problems implementing. James On Mon, May 18, 2009 at 4:22 PM, Glenn Little <[email protected]> wrote: > > > No, we're not at rails 2.3, so no nested models. And I was kind of hoping > to do all the validation/saving in one go rather and bit-by-bit doing it > with Ajax, unless I misunderstand how Ajax can help. A generic-ized > version of the controller code is here: > > http://pastie.org/482217 > > Thanks... > > -glenn > > James Miller wrote: > > Hey Glenn, > > > > Can you paste your model/controller code into a gist or pastie? Are you > > using nested attributes with Rails 2.3 > > (http://guides.rubyonrails.org/2_3_release_notes.html#nested-attributes) > > or doing it manually? > > > > James > > > > On Mon, May 18, 2009 at 3:45 PM, Glenn Little <[email protected] > > <mailto:[email protected]>> wrote: > > > > > > (Okay, yeah, that subject line is bad taken out of context!) > > > > I'm in a form-handler action where I have a parent record and a list > of > > associated child records via a has_many association. > > > > I first walk through form params and look for matching child records > > in the database (via a hidden child_id form param) and if the record > > exists, I update the data, otherwise I create a new one via > > parent.build() > > and fill it in. So now parent.children may have a mix of objects, > some > > in the db and some not yet. > > > > Then I update various parent values from params. > > > > Then I walk through the parent.children records and do a child.save > > or child.destroy (depending on the new values and depending on > > various business > > rules). Some of the destroy calls will be on child objects that > > have just been > > created and never put in the database (build() does not do an > > implicit save). Some > > will be called on records that were in fact in the database. > > > > All good so far, but now I want to wave the updated parent record. > > The problem is that when I do the parent.save, I get a > > "can't modify frozen hash" error. > > > > I believe that's because the objects corresponding to any child > records > > that were destroyed have been frozen. But I'm not sure why the > > parent.save > > is trying to modify those objects? > > > > Given these issues, I'm starting to wonder if my whole paradigm is > > making > > my life more difficult than it needs to be. > > > > Any ideas on how to get around the frozen hash issue, or > alternatively, > > the "right" way to do what I'm trying to do? > > > > Thanks much in advance... > > > > -glenn > > > > > > > > > > > > > > > --~--~---------~--~----~------------~-------~--~----~ SD Ruby mailing list [email protected] http://groups.google.com/group/sdruby -~----------~----~----~----~------~----~------~--~---
