我正在尝试使用 rails/ember.js 编写一个小博客应用程序。帖子可以被标记(使用acts-as-taggable-on),并且可以通过访问“/t/:tag_name”查看具有特定标签的所有帖子的列表。我在 post_controller.rb 的索引操作中使用“tagged_with”进行搜索(如果我没记错的话,通过 tagged_route.js 中的“find”调用)以及当我直接访问页面时(例如使用“/t/first ") 一切正常。
但是,当我转到其中一个帖子的页面并单击指向其中一个标签的链接时,ember.js 停留在帖子控制器(.js 之一)中,同时转到正确的地址,我得到一个以下错误消息:
- TypeError:arrangedContent.addArrayObserver 不是函数
- TypeError:content.removeArrayObserver 不是函数
- TypeError: get(...).objectAt 不是函数
我试过添加
controllerFor: function() {
return EmberBlog.TaggedController;
}
到 tagged_route.js,但标签页面上找到的帖子列表仍然为空。soo,有没有人知道我可能做错了什么?
以下是(可能)相关文件:
我的路由器.js:
EmberBlog.Router.map(function() {
// default index route to / loading index template
this.resource("posts", function() { // implicit path and template name (same as route name)
//this.route('new');
});
this.resource('post', { path: '/posts/:post_id' });
this.resource('tagged', { path: '/t/:tag_name' });
this.route("about");
});
EmberBlog.reopen({
location: 'history'
});
我的 tagged_route.js:
EmberBlog.TaggedRoute = Ember.Route.extend({
model: function(params) {
Em.Logger.info( params );
var posts = EmberBlog.Post.find({'tag_name': params.tag_name});
return posts;
}//,
//controllerFor: function() {
// return EmberBlog.TaggedController;
//}
});
我的 post_controller.rb 中的索引操作:
def index
if params[:tag_name]
posts = Post.tagged_with(params[:tag_name])
else
posts = Post.all
end
render json: posts, meta: { total: posts.count }
end
我的 tagged.handlebars:
<h2>Tagged Posts</h2>
<div id="posts">
{{log controller}}
<ul>
{{#each post in controller}}
{{view EmberBlog.PostInListView contentBinding="post"}} //--> <li>{{#linkTo post post}}{{post.title}}{{/linkTo}}</li>
{{else}}
Sorry, no posts to display
{{/each}}
</ul>
</div>
我的 post.handlebars 的相关部分:
...
<div class="taglist">
<ul class="inline">
Tags:
{{#each tag in tagList}}
<li>{{#linkTo tagged tag}}{{tag}}{{/linkTo}}</li>
{{else}}
...