我試圖用rails/ember.js寫一個小博客應用程序。帖子可以被標記(使用acts-as-taggable-on),並且可以通過訪問「/ t /:tag_name」來查看具有特定標籤的所有帖子的列表。我正在使用post_controller.rb的索引動作(如果我沒有弄錯,通過tagged_route.js中的「find」調用)以及當我直接訪問頁面時(例如用「/ t/first」 「)一切工作正常。但是,當我轉到其中一個帖子的頁面並點擊其中一個標籤的鏈接時,ember.js保留在帖子控制器(.js一個)中,同時轉到正確的地址並我收到以下錯誤消息之一:ember.js貌似挑選了一個路線錯誤的控制器
- 類型錯誤:arrangedContent.addArrayObserver不是一個函數
- 類型錯誤:content.removeArrayObserver不是一個函數
- 類型錯誤:要麼(...)objectAt是不是功能
我已經嘗試添加
controllerFor: function() {
return EmberBlog.TaggedController;
}
到tagged_route.js,但隨後的標籤頁上的帖子列表只保留爲空。 洙,有沒有人有一個想法,我可能會做錯什麼?
這裏是(可能)的相關文件:
我router.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}}
...