in reply to Re^2: 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)

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)?

Replies are listed 'Best First'.
Re^4: Mojo 0.7 released (Perl on Rails in 150 lines of code)
by sri (Vicar) on Oct 21, 2008 at 09:31 UTC
    ->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.
        Try not to think too complicated. :)
        It basically just passes around a hash that gets decorated with captures and/or defaults, thats it.