2013-07-31 3 views
0

Как я могу определить маршруты, как это:ember.js - Ресурс индекс маршрута без динамического сегмента

  • /пользователей (показать все пользователи)
  • /пользователей /: user_id (показать конкретного пользователя)
    • /пользователей /: user_id/проекты (показать проекты конкретного пользователя)

я в настоящее время это сконфигурировано:

@resource 'users', path: '/users/:user_id', -> 
    @route 'projects' 

Но проблема в том, что я не могу получить доступ к /users (там нет такого маршрута). UsersIndexRoute относится к /users/:user_id.

ответ

1

Вы бы лучше делать что-то вроде:

this.resource('users', function() { 
    this.resource('user', {path: '/:user_id'}, function() { 
     this.resource('projects'); 
    }); 
}); 

Это будет генерировать (или, если вы определили их, использование):

  • UsersRoute с URL /users, UsersController и User, где вы загрузите всех пользователей.
  • A UserRoute с URL-адресом /users/:user_id, a UserController и той же моделью User, где вы будете загружать индивидуальные данные пользователя.
  • A ProjectsRoute с URL /users/:user_id/projects, a ProjectsController и моделью Project, где вы загрузите пользовательские проекты.

JSBin example показать это в действии.

Дополнительную информацию об определении маршрутов см. В разделе here и что Эмбер ожидает увидеть (или сгенерировать для вас).

+0

Я заменил маршруты, следующие за вашим примером, но я получаю эту ошибку: «Было передано больше объектов контекста, чем есть динамические сегменты для маршрута: users.index' – EsTeGe

+0

Измените маршрут в вашем помощнике' linkTo' на 'user .index' вместо 'users.index' – Josh

+0

Отлично! Это работает сейчас, но когда я, например, посещаю '/ users/123', я ожидаю, что смогу сделать' App.User.find (params.user_id) 'в' UserIndexRoute', но params - пустой хеш. – EsTeGe

Смежные вопросы