そのため、プロジェクトとそのプロジェクトのストーリーを表示する単純なビューがあります。Iron Router では、これを projectShow ルートと呼んでいます。
@route 'projectShow', {
path: '/projects/:_id',
template: 'projectsShow'
}
私のテンプレートは
<template name="projectsShow">
<div class="row">
I'm a project
{{name}}
<a href="#" id="add-story">New Story</a>
{{#each stories}}
Title: {{title}}
{{/each}}
</div>
</template>
したがって、私をつまずかせているのは、サーバーからデータを正しく選択してクライアントに提供することです。私が試したのは、次のように公開することです:
if Meteor.isServer
Meteor.publish "projectAndStories", (id) ->
[Projects.findOne({_id: id}), Stories.find({projectId: id})]
私にとって不明なのは、ルーター/クライアント側でこれを正しくサブスクライブする場所と方法、およびセッション変数を設定して、新しいストーリーを追加するときに現在のプロジェクトを参照できるようにすることです
私は試した:
# in route
waitOn: ->
Meteor.subscribe('projectAndStories', @params._id)
Session.set('projectId', @params._id)
# template js file
Template.projectShow.project = Projects.findOne({_id: Session.get('projectId')})
Template.projectShow.stories = Stories.find({projectId: Session.get('projectId')})
ただし、これはテンプレートに組み込まれているようには見えません。私は何を間違っていますか?