http://www.perlmonks.org?node_id=617165

madison.sacd has asked for the wisdom of the Perl Monks concerning the following question:

Dear Monks,

I try to attach query string when I use response redirect but it doesnt work. Please help me to check what is wrong with my code?
my $itemid = 16; my $uri = "/lender/loan/loan_details?itemid=${itemid}&Display; $c->response->redirect( $c->uri_for($uri) );

Replies are listed 'Best First'.
Re: about catalyst response redirect
by chargrill (Parson) on May 24, 2007 at 05:42 UTC

    I don't think uri_for works like that. From the docs:

    $c->uri_for( $path, @args?, \%query_values? )
    Merges path with $c->request->base for absolute URIs and with $c->namespace for relative URIs, then returns a normalized URI object. If any args are passed, they are added at the end of the path. If the last argument to uri_for is a hash reference, it is assumed to contain GET parameter key/value pairs, which will be appended to the URI in standard fashion.

    So maybe something like:

    my $itemid = 16; my $path = "/lender/loan/loan_details"; $c->response->redirect( $c->uri_for( $path, { itemid => $itemid, Displ +ay => 1 } );

    Completely untested and assuming the rest of your code is correct. To test that, try just: $c->response->redirect( "/lender/loan/loan_details?itemid=$itemid&Display" ); to make sure that part works.



    --chargrill
    s**lil*; $*=join'',sort split q**; s;.*;grr; &&s+(.(.)).+$2$1+; $; = qq-$_-;s,.*,ahc,;$,.=chop for split q,,,reverse;print for($,,$;,$*,$/)
      thanks a lot! It works fine!