progress but still no joy (was Re: [Catalyst] still not sure if I have the hang of this ...)

Joe Landman landman at
Wed Dec 28 07:46:27 CET 2005

Ok, started playing with DBIx::Class and DBIx::Class::Table, and a toy 
database.  Got a minimalistic test case going fine with that.  Now to 
make it work with Catalyst.

I did the "usual" test
	cd test
	script/ model Database DBIC dbi:SQLite:/root/test/db/test.db
	script/ view Mason Mason

I added the Mason component root setup and other bits.  Then

	script/ controller db

The db has a single table named testing, with a very simple structure:

	CREATE TABLE testing (
		name text,
		size text

I added some simple data into it to make testing easier.

	sqlite> select * from testing;

In the test/Model/Database/ package, I added a pointer to the 
table and added the columns

	__PACKAGE__->add_columns(qw/id name size/);

I added a simple global list method to the db controller

	sub list : Global {
		use Data::Dumper;
		my ( $self, $c ) = @_;
   		my (@all);
  		 @all = test::Model::Database::Testing->search();
   		$c->forward( 'test::View::Mason');

Ok.   Now I am getting an error message of

	[Wed Dec 28 04:06:40 2005] [catalyst] [error] Couldn't render component 
"/list" - error was "could not find component for initial path '/list' 
(component roots are: '/root/test/root/static')

for the http://dualcore:3000/list url.

I think this is a Mason error and not a Catalyst error.  I see the data 
in the stash at the end of the web page, and it is identical to what I 
generated with my DBIx::Class::Table bit.  I think I know how to fix it, 
but I am not completely sure.  Will experiment a bit more.

My question is, apart from a Mason error, is this the right general 
path?  Or I am doing something very wrong somewhere?   Basically we are 
taking a  Mason based application, and migrating it into Catalyst with a 
Mason view so we can do a saner job of extending/maintaining it.  Our 
old method of DB interaction was rather different, so I am trying to get 
on a fast (re)learning curve :).

Thanks again for the pointers and your patience.

BTW:  addcomment was not missing, I just didn't find it before posting. 
  I did find it later.  It was helpful as well.


Andreas Marienborg wrote:
> On 27. des. 2005, at 21.14, Joe Landman wrote:
>> (I haven't used DBIx::Class and its ilk before so this might be a  
>> dumb question)
>> I create a form.  I submit with that form.  I see the request go to  
>> the test server with the data.
>> Now I want to take this data and stuff it into one of my model's  
>> tables.  I presume it is something like
>>     __PACKAGE__->find_or_create({ key1 => $value1, key2 =>  $value2, 
>> ...} );
> You usually have to replace __PACKAGE__ with the actual model- package, 
> like MyApp::Model::Table->find_or_create
> In a controller, __PACKAGE__ equals the package of the controller,  and 
> that controller, most likely, lacks a find_or_create method.
>> from the controller.  This seems wrong to me though, in that  wouldn't 
>> we want to go through the model?  I think I am missing  something 
>> fundamental here.
>> Is there a really dumb/simple example out there for perusal which  
>> demonstrates taking data from a form and putting it into a database  
>> using Catalyst?  I can't seem to wrap my mind around the correct  
>> method, as I don't see an example of it.  I looked through the  Agave 
>> site, and it seems to be missing a few of the methods  (addcomment is 
>> pretty much what I want to see, but it doesn't  appear to be in the 
>> tree).
> Check out the BookDB example from
>> Thanks.
>> Joe
>> -- 
>> Joseph Landman, Ph.D
>> Founder and CEO
>> Scalable Informatics LLC,
>> email: landman at
>> web  :
>> phone: +1 734 786 8423
>> fax  : +1 734 786 8452
>> cell : +1 734 612 4615
>> _______________________________________________
>> Catalyst mailing list
>> Catalyst at
> _______________________________________________
> Catalyst mailing list
> Catalyst at

Joseph Landman, Ph.D
Founder and CEO
Scalable Informatics LLC,
email: landman at
web  :
phone: +1 734 786 8423
fax  : +1 734 786 8452
cell : +1 734 612 4615

More information about the Catalyst mailing list