On 24 September 2012 11:22, <sc...@simpzoid.com> wrote: > Dear All, > > I have been the following 2 methods in a controller: > > sub create :Chained('base') :PathPart('create') > :FormConfig('author/edit.conf') { > my ( $self, $c ) = @_; > > my $form = $c->stash->{form}; > $form->stash( schema => $c->stash->{schema} ); > > if ( $form->submitted_and_valid ) { > > my $author = > $form->stash->{schema}->resultset('Author')->new_result({}); > $form->model->update($author); > $c->response->redirect( $c->uri_for( $self->action_for('list')) > ); > } > $c->stash(template => 'author/formfu_create.tt2'); > } > > sub edit :Chained('object') :PathPart('edit') :Args(0) > :FormConfig('author/edit.conf') { > my ( $self, $c, $id ) = @_; > > my $form = $c->stash->{form}; > > if ( $form->submitted_and_valid ) { > $form->model->update($c->stash->{rs}); > $c->response->redirect( $c->uri_for( > $self->action_for('list')) ); > } else { > $form->model->default_values($c->stash->{rs}); > } > $c->stash(template => 'author/formfu_create.tt2'); > } > > The methods give the following results: > > Edit gives > SELECT me.id, me.name FROM author me WHERE ( me.id = ? ): '1' > UPDATE author SET name = ? WHERE ( id = ? ): 'scott', '1' > SELECT me.id, me.address, me.author_id FROM address me WHERE ( ( me.id = ? > AND me.author_id = ? ) ): '1', '1' > UPDATE address SET address = ? WHERE ( id = ? ): '13 thriplee road', '1' > > Create Gives > INSERT INTO author ( name) VALUES ( ? ): 'Marge' > > ...and finally the question. Why does the create method not do an insert > into the address table and what do I have have to do to persuade the > create method to do said insert?
I haven't checked the Model::DBIC code, but I suspect it's because the author row doesn't exist at the time it would be creating the related rows. Try adding $author->insert; before your $form->model->update($author); Carl _______________________________________________ HTML-FormFu mailing list HTML-FormFu@lists.scsys.co.uk http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu