Я все еще учусь Ember, и я хотел бы некоторую помощь, чтобы решить эту проблему ...Ember - Маршруты/Верстка/Params/HasMany
У меня есть простое приложение, библиотека с авторами и книгами. Я хотел бы добавить ссылку «добавить книгу» в мой шаблон просмотра автора И я хочу, чтобы эта ссылка отображала новый шаблон книги с указанием book.author. Но я хочу, чтобы отображаться в главном выходе
Моих моделей:
App.Author = DS.Model.extend({
name: DS.attr('string'),
about: DS.attr('string'),
picture: DS.attr('string'),
books: DS.hasMany('book', {async: true})
});
App.Book = DS.Model.extend({
title: DS.attr('string'),
isbn: DS.attr('string'),
summary: DS.attr('string'),
isAvailable: DS.attr('boolean'),
featured: DS.attr('boolean'),
picture: DS.attr('string'),
author: DS.belongsTo('author', {async: true})
});
Вот мои маршруты:
App.Router.map(function() {
this.resource('books', function() {
this.route('edit', {path: '/:book_id/edit'});
this.route('view', {path: '/:book_id'});
});
this.resource('authors', function() {
this.route('new');
this.route('edit', {path: '/:author_id/edit'});
this.route('view', {path: '/:author_id'}, function(){
this.resource('books', function(){
this.route('new');
});
});
});
});
URL будет как authors/4/books/new
С этими вложенными маршрутами , Я могу отображать только мой шаблон books.new
внутри розетки authors
. Я не могу отобразить его в главном розетке.
Другой способ я думал, используя thoses маршруты
App.Router.map(function() {
this.resource('books', function() {
this.route('new');
this.route('edit', {path: '/:book_id/edit'});
this.route('view', {path: '/:book_id'});
});
this.resource('authors', function() {
this.route('new');
this.route('edit', {path: '/:author_id/edit'});
this.route('view', {path: '/:author_id'});
});
});
и используя QueryParams
URL будет как books/new?author_id=4
отображается прямо шаблон, но я не мог связать мой новый книжный рекорд его автору.
Что такое «лучшая практика ember», чтобы заставить ее работать?, Не могли бы вы дать мне рабочий пример?
Спасибо.
Возможно, я бы сменил author.view на author.show, чтобы избежать путаницы с Ember Views. –