rails/ember.js で小さなブログ アプリを作成しようとしています。投稿は (acts-as-taggable-on を使用して) タグ付けすることができ、「/t/:tag_name」にアクセスすると、特定のタグが付いたすべての投稿のリストを表示できるようになります。post_controller.rb のインデックス アクションで "tagged_with" を使用して検索を行っています (間違っていなければ、tagged_route.js の "find" を介して呼び出されます)。 ") すべて正常に動作します。
ただし、投稿の1つのページに移動して、そこにあるタグの1つへのリンクをクリックすると、正しいアドレスに移動している間、ember.jsは投稿コントローラー(.jsのもの)にとどまり、そのうちの1つを取得します次のエラー メッセージ:
- TypeError: ArrangeContent.addArrayObserver は関数ではありません
- TypeError: content.removeArrayObserver は関数ではありません
- TypeError: get(...).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
私のタグ付けされた.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}}
...