似乎我没有在我的路由器中正确设置我的模型钩子,因为我的数据在模板中呈现。但也许还有其他我不想要的东西
这是我的路由器
Router.map(function() {
this.resource('movies', function() {
this.route('show', { path: ':movie_id'}, function() {
this.resource('rewrites', function() {
this.route('show', { path: ':id'});
this.route('new');
this.route('edit');
});
});
this.route('edit', { path: ':movie_id/edit'});
this.route('new');
});
});
在我的下面重写的索引模板中,templates / rewrites / index.hbs,我需要显示一个特定电影的所有重写
{{outlet}}
{{link-to 'Add a New Rewrite' 'rewrites.new'}}
<table class="table table-bordered">
<thead>
<tr>
<th>Name</th>
<th>Script</th>
<th>Author</th>
<th></th>
</tr>
</thead>
<tbody>
{{#each rewrite in movie}}
<tr>
<td>
{{rewrite.name}}
</td>
<td>{{rewrite.script}}</td>
<td>{{rewrite.author}}</td>
<td>{{link-to 'Edit this Rewrite' 'rewrites.edit' this}}</td>
<td><a href="#" {{action 'delete' rewrite}}>Delete</a></td>
</tr>
{{/each}}
</tbody>
</table>
我的路线中的模型设置,routes / rewrites / index.js,是
model: function() {
var movie = this.modelFor('movies.show');
return this.store.findAll('rewrite', { movie:movie });
},
我为该模型尝试了很多东西,也试过了
return this.store.findAll('rewrite');
找到并呈现模板的方式,但没有数据 在创建重写2之后,我尝试了
return this.store.find('rewrite', 2);
并且也不会呈现任何数据。
更新:
上面的路由器是正确的。上面的templates / rewrites / index.hbs应该是{{#each rewrite in model}}
模型钩子应该是
model: function() {
return this.modelFor('movies.show').get('rewrites');
},
此外,这个应用程序的api是一个rails应用程序。在电影的rails序列化器中,我需要将has_many添加到sideload重写中,如下所示:
class MovieSerializer < ActiveModel::Serializer
attributes :id, :title, :director, :releaseDate, :cast, :description, :imageUrl
has_many :rewrites, embed: :ids, include: true
end
答案 0 :(得分:0)
您的each
不正确; movie
是单个对象,而不是要迭代的数组。试试这个:
{{#each rewrite in movie.rewrites}}
至少,假设您的对象模型是电影hasMany
重写的。如果你真的想独立地在路由中加载重写,你可以像这样迭代它们:
{{#each rewrite in model}}