テンプレートヘルパーで、次のように Iron.Router (_iron:router
_)から現在のパスを取得します。
_Router.current().route.path()
_
ルートパスにパラメータ(例:_/client/:_id/edit
_)が含まれていない限り、これは正常に機能します。その場合、path()
関数はnull
を返します。
ルートにパラメータが含まれている場合、テンプレートヘルパー内の現在のパスを取得するにはどうすればよいですか?
Meteor 1.0を_iron:router
_ 1.0.1で使用しています
ルートの__id
_はコレクションからのものであると思います。ルートの基になっているドキュメントを_route.path
_に渡す必要があります。
_Router.route("/client/:_id/edit",{
name:"edit",
data:function(){
return MyCollection.findOne(this.params._id);
}
});
<template name="edit">
{{myHelper}}
{{pathFor route="edit"}}
</template>
Template.edit.helpers({
myHelper:function(){
return Router.current().route.path(this);
}
});
_
アプリでURLをレンダリングするには、デフォルトのpathFor
ヘルパーを使用することをお勧めします。
https://github.com/EventedMind/iron-router/blob/devel/Guide.md#pathfor
このヘルパーは、現在のデータコンテキスト(この場合はMyCollection.findOne(this.params._id)
)を使用してルートパラメーターを抽出しています。
ただし、ルートからpathメソッドを使用することもできます。このメソッドは、パスを生成するドキュメントを最初の引数として使用します。
次の代替方法を試してください。
Iron.Location.get().path;
パラメータ付きのパスが必要な場合は、問題なく動作します。ただし、現在のルートは返されません。
Meteor Iron Routerがルートから現在のパスを取得しない を参照してください