http://qs321.pair.com?node_id=718411


in reply to Re: Mojo 0.7 released (Perl on Rails in 150 lines of code)
in thread Mojo 0.7 released (Perl on Rails in 150 lines of code)

Nope, you don't have to define other routes if you don't want to, ->to is in fact synonymous to ->default.

Replies are listed 'Best First'.
Re^3: Mojo 0.7 released (Perl on Rails in 150 lines of code)
by zby (Vicar) on Oct 21, 2008 at 09:05 UTC
    OK - so one more question. In the code above - does ->to add that default route to $r (i.e. globally) - or does it only add it to uris that can be parsed as '/:controller/:action/:id' (i.e. to the just added route)?
      ->route will create a new route object, which has a method ->to that sets some attributes in the object.
      There is no hidden magic and they should not touch parent or child routes, but default values (and captures) will be forwarded to child routes when matching a path.
      # /foo my $x = $r->route('/foo')->to(controller => 'bar'); # /foo/* $x->route('/:action')->to(action => 'test');
      This would be a nested route example where defaults and captures get forwarded. (controller => 'bar' in this case)
        Nice. Although without the explanation I would read $x->route('/:action')->to(action => 'test'); as meaning that now everything would go to test. Even now I am not so sure if I understood it correctly - and that it only means that uris without a matching action part would end up there.