まず、同じページにいるように、ルートが次のように設定されている場合:
FlowRouter.route('/blog/:postId', {
action: function (params, queryParams) {
FlowLayout.render('layout', { body: 'postTemplate' });
},
});
FlowRouter.getParam('postId')
AutoForm フック内から呼び出すことができます
AutoForm フックを使用し、完全なスキーマを用意する必要があります。aldeed:collection2
スキーマ設定用のパッケージを使用しています。postId
フィールドは明示的に宣言する必要があります。このコードは、サーバーとクライアントの両方で実行されています。
Comments = new Mongo.Collection("comments");
Comments.attachSchema(new SimpleSchema({
comment: {
type: String,
label: "Comment"
},
postId: {
type: String
}
}));
このようにフォームを設定することは、あなたが望むものではありません:
{{> quickForm collection="Comments" id="commentForm" type="insert"}}
postId
HTML出力にフィールドが表示されるため、これは良くありません。これは望ましくないため、次のようにフォームを完全に定義する必要があります。
{{#autoForm collection="Comments" id="commentForm" type="insert"}}
<fieldset>
{{> afQuickField name='comment' rows=6}}
</fieldset>
<button type="submit" class="btn btn-primary">Insert</button>
{{/autoForm}}
次に、AutoForm フックを追加します。このコードはクライアントで実行されています。
var commentHooks = {
before: {
insert: function(doc){
var postId = FlowRouter.getParam('postId');
doc.postId = postId;
return doc;
}
}
};
AutoForm.addHooks(['commentForm'],commentHooks);
許可/拒否ルールが設定されていることを確認してください。正常に機能するはずです。