Подтвердить что ты не робот

Как правильно генерировать ресурсы и маршруты с помощью Ember CLI

Я пытаюсь определить ресурс и маршрут, подобный этому, с помощью Ember CLI.

    this.resource('events', function() {
        this.route('view', { path: "/:id"})
    });

Если я попробую это: ember g resource events/view, я получаю следующее:

this.resource('events/view', { path: 'events/views/:events/view_id' });

Если я попробую: ember g resource events и: ember g resource events/view

this.resource('events', { path: 'events/:events_id' });
this.resource('events/view', { path: 'events/views/:events/view_id' });

Если я попробую: ember g resource events и: ember g route events/view

this.resource('events', { path: 'events/:events_id' });
this.route('events/view');

Есть ли способ сделать это?

4b9b3361

Ответ 1

В это время вложенные ресурсы и маршруты в желаемом шаблоне автоматически не генерируются с помощью чертежей по умолчанию, найденных в Ember CLI. Чертежи по умолчанию генерируют скелетные файлы и структуру файлов, а некоторые используют их afterInstall для обновления других файлов. Следуя этим чертежам по умолчанию, вы должным образом генерируете эти элементы:

    ember g resource events
    ember g route events/view

Затем вы можете изменить Router.map в router.js с предполагаемым вложением:

    Router.map(function() {
      this.resource('events', function() {
        this.route('view', { path: "/view/:id" });
      })
    });

Теперь вы можете ударить 'events/view/1' в своем браузере и посмотреть маршруты, которые вы искали в маршрутах Ember Inspector's вкладка.

В качестве альтернативы вы можете выполнить следующее и создать собственный проект:

    ember generate blueprint nested-resource-route

В корне проекта будет создан каталог чертежей, в котором будет создан новый чертеж. Используя чертежи ресурса и маршрута в качестве основы, вы можете свернуть собственный генератор, чтобы выполнить то, что вы ищете.

Ответ 2

Поведение, которое вы хотите, возможно в ember-cli 0.1.5 и более поздних версиях. Из примечания к выпуску:

# 2748 улучшил генератор маршрутизатора, чтобы поддерживать правильно вложенные маршруты и ресурсы, ранее, если у вас был маршрут, похожий на:

Router.map(function() {
  this.route("foo");
});

И вы сделали ember g route foo/bar сгенерированные маршруты:

Router.map(function() {
  this.route("foo");
  this.route("foo/bar");
});

Теперь он правильно управляет вложенными маршрутами, поэтому результатом будет:

Router.map(function() {
  this.route("foo", function() {
    this.route("bar");
   }); 
});

Дополнительно добавлена ​​опция --path, поэтому вы можете делать такие вещи, как ember g route friends/edit --path=:friend_id/id, создавая вложенные маршрут под friends как: this.route('edit', {path: ':friend_id/edit'})