[Catalyst] Error with create_from_form

Kevin Old kevinold at gmail.com
Wed Jan 4 15:24:28 CET 2006

Hello everyone,

I'm playing around with the BookDB example
and tried to add a book via the ISBN lookup feature.  It's looked up
correctly, but when it do_add tries to insert into the database via
create_from_form I get this:

[Wed Jan  4 08:48:39 2006] [catalyst] [error] Caught exception "Can't
insert new BookDB::M::BookDB::Book: Cannot call execute with a
reference (ARRAY(0x996e178))
 at /usr/lib/perl5/site_perl/5.8.6/Class/DBI/FromForm.pm line 64"

Here's the code in question:

sub do_add : Local {
    my ( $self, $c ) = @_;
    $c->form( required => [qw /title author/],
              optional => [ BookDB::M::BookDB::Book->columns ] );
    BookDB::M::BookDB::Book->create_from_form( $c->form );

The info about the book is passed to do_add via do_add_from_isbn:

ub do_add_from_isbn : Local {
   my ($self, $c) = @_;
   my $ua = Net::Amazon->new(token => $c->config->{amazon_token} ||
   my $response = $ua->search( asin => $c->req->param('isbn') );
   my ($prop) = $response->properties;
   if ($response->is_success()) {
    $c->error('Is success');
    $c->req->param('title', $prop->title);
    $c->req->param('publisher', $prop->publisher);
    $c->req->param('year', $prop->year);
    $c->req->param('author',join( "/", $prop->authors ) );
    # Jump to the standard routine
   } else {
    $c->error('Is NOT success');
    $c->stash->{message} = "Object not found: ".$response->message();
    $c->stash->{template} = 'Book/add.tt';

I can't figure out why it's not working.  I've dumped the object and
there's plenty of good valid data in it.

Any suggestions?

Kevin Old
kevinold at gmail.com

More information about the Catalyst mailing list