[dancer-users] Database template not working (and also my Dancer2 code)

CHONG Yu Meng yumeng.chong at invictus.com.sg
Sun Jul 2 03:41:38 BST 2017


Hi all, 

Learning Dancer2 and trying to re-learn Perl, so please be patient. 

I've read the Manual and Tutorial, and I can get most examples working, except for querying a database and displaying the results. I am using Dancer2::Plugin::Database.

I have a simple database table (jpstars):
+----+-----------------+---------------------+
| id | firstname     | lastname           |
+----+-----------------+---------------------+
|  1 | Harumi         | Nemoto             |
|  2 | Eiko               | Koike                  |
|  3 | Ami               | Ayukawa            |
+----+-----------------+---------------------+

I have the following Dancer2 code (dancerapp.pm):

package dancerapp;
use Dancer2;
use Dancer2::Plugin::Database;

our $VERSION = '0.1';
get '/dbtest'  => sub {
        my $sth = database->prepare(
                'SELECT id, firstname, lastname FROM jpstars;'
        );
        $sth -> execute;
        template 'display_jpstars', {
                subscribers => $sth -> fetchrow_hashref('id')
        };
};

I have this template file (display_jpstars.tt)

<html><head><title>JPStars</title></head>
<body>
<h1>JpStars</h1>
<table>
<tr> <th>First Name</th> <th>Last Name</th> </tr>
<% FOREACH id IN subscribers.keys.nsort %>
<tr> <td><% subscribers.$id.displayname %></td> <td><% subscribers.$id.emailaddr %></td> </tr>
<% END %>
</table>
</body>
</html>

dance;

I get an error: "Can't use attribute 'id' because it doesn't contain a reference to an array"

I'm pretty sure my template code is wrong (my dancer.pm code too), but I have no idea how it should look. Help! 

Thanks in advance!

Pascal CHONG




More information about the dancer-users mailing list