# Pattern for a navigation controller

**URL:** <https://discuss.emberjs.com/t/pattern-for-a-navigation-controller/1615>\
**Category:** Uncategorized\
**Created:** [June 25, 2013, 11:54am UTC](https://discuss.emberjs.com/t/pattern-for-a-navigation-controller/1615 "2013-06-25T11:54:58Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![mtr](https://avatars.discourse-cdn.com/v4/letter/m/f14d63/32.png) [@mtr](https://discuss.emberjs.com/u/mtr)\
**Post date:** [June 25, 2013, 11:54am UTC](https://discuss.emberjs.com/t/pattern-for-a-navigation-controller/1615/1 "2013-06-25T11:54:58Z")

</div>

Here I was thinking I was very smart. I created an outlet `{{outlet nav}}` in my application template, as I need it on every page. Then in my `ApplicationRoute` I run inside renderTemplate:

`this.render('nav', { into: 'application', outlet: 'nav', controller: 'trucks' } );`

Great, it works! I can iterate through my trucks content and create a nice dropdown jump menu from truck to truck.

Except the only reason it works is that my root path is `this.resource('trucks', { path: '/' });`. The trucks route is setting up the controller, loading it with model data, and making it available in the nav template.

If I hit directly any _other_ page, while my ApplicationRoute is fired and I do render the template into the `nav` outlet, no trucks controller content is ever ready for consumption. My dropdown is empty.

Stop the madness! Where have I gone wrong?

---

<div class="post-metadata">

**Author:** ![knownasilya](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/knownasilya/32/12912_2.png) [@knownasilya](https://discuss.emberjs.com/u/knownasilya)\
**Post date:** [June 26, 2013, 1:24pm UTC](https://discuss.emberjs.com/t/pattern-for-a-navigation-controller/1615/2 "2013-06-26T13:24:03Z")

</div>

One option would be to use the `ApplicationController`, and to just set the `needs` property. So for example:

```
App.ApplicationController = Ember.ObjectController.extend({
  needs: ["trucks", "cars"]
});

```

And then you can use `controller.controllers.trucks` in your view/template. This would require you to update your `render` options. There might be other ways to do this as well…
