EventedMind/iron-router — pull request #854 by hellogerard (2014-09-24 16:49:28+00:00)
Title: Implement 'pass' function to skip to next matching route

New feature: a route can tell iron-router to continue to the next matching route using the `pass()` method. When this method is invoked, iron-router will immediately stop processing the current matching route and invoke the next matching route. If no subsequent matching route is found, `notFound` handlers are called as normal.

Example:

```javascript
Router.route('/:whatever', function() {
this.pass();
this.render('thisWillNeverRender');
});

Router.route('/hello', function() {
this.render('hello');
});
```

Requesting `/hello` will render the `hello` template. Requesting anything else will result in a `notFound`. `pass()` works on the server as well.

This was actually pretty easy once I understood the basic mechanics of the new middleware-based iron-router (nice work BTW!). But there is a lot of complexity there, so while I think this is right, please review I've done this correctly.

The idea for this feature was brought about because of a [`meteor-blog` issue](https://github.com/Differential/meteor-blog/issues/94), where we wanted the blog to handle any incoming slug to see if it was a blog post, and then pass the request on if it wasn't.

WDYT?