On 2021-01-21 12:12 p.m., Morse, Richard E.,MGH wrote:
In particular, I am showing a listing of things, and I would like to add an edit link. I have the following setup:
prefix '/foo';
get '/' => sub { forward '/foo'; }; get '' => sub { my @rows = database->quick_select(...); foreach my $r (@rows) { $r->{'edituri'} = uri_for( '/foo/' . $r->{'id'}); } template 'foo.tt', { 'listing' => \@rows, 'adduri' => uri_for( '/foo/add' ) }; };
I feel like I should be able to get rid of the '/foo' bit in the `forward` and `uri_for` calls — if this changes, I now need to change it in multiple places, and could introduce a typo. I tried doing `uri_for( prefix . '/' . $r->{'id'})`, but that didn't work.
If there isn't some obvious way to do this, how to other people manage these kinds of things?
A very simple, straightforward way of doing it: my $prefix = '/foo'; prefix $prefix; get '/' => sub { forward '/foo'; }; get '' => sub { my @rows = database->quick_select(...); foreach my $r (@rows) { $r->{'edituri'} = uri_for( join '/', $prefix', $r->{'id'}); } template 'foo.tt', { 'listing' => \@rows, 'adduri' => uri_for( join '/', $prefix, 'add' ) }; }; `/.