Ember CLIを使用して、このようなリソースとルートを定義しようとしています。
this.resource('events', function() {
this.route('view', { path: "/:id"})
});
私がこれを試した場合:ember g resource events/view
私はこれを得ます:
this.resource('events/view', { path: 'events/views/:events/view_id' });
私がこれを試した場合:ember g resource events
および:ember g resource events/view
this.resource('events', { path: 'events/:events_id' });
this.resource('events/view', { path: 'events/views/:events/view_id' });
私がこれを試した場合:ember g resource events
および:ember g route events/view
this.resource('events', { path: 'events/:events_id' });
this.route('events/view');
これを行う方法はありますか?
現時点では、必要なパターンでネストされたリソースとルートは、Ember CLIにあるデフォルトのブループリントで自動的に生成されません。デフォルトのブループリントは、骨格ファイルとファイル構造を生成し、いくつかの使用法これらのafterInstall
フックを使用して他のファイルを更新します。これらのデフォルトのブループリントに従って、これらのアイテムを適切に生成しています。
ember g resource events
ember g route events/view
次に、意図した入れ子でrouter.jsのRouter.mapを変更します。
Router.map(function() {
this.resource('events', function() {
this.route('view', { path: "/view/:id" });
})
});
これで、ブラウザーで「events/view/1」を押して、探しているルートを Ember Inspector's Routesタブで確認できるはずです。
または、次のコマンドを実行して、カスタムブループリントを生成することもできます。
ember generate blueprint nested-resource-route
ブループリントディレクトリがプロジェクトルートに作成され、新しいブループリントが中に含まれます。リソースとルートブループリントを基盤として使用して、独自のジェネレーターをロールして、求めているものを実現できます。
希望する動作はember-cli 0.1.5以降で可能です。 リリースノート から:
#2748 以前は次のようなルートがあった場合、適切にネストされたルートとリソースをサポートするようにルータージェネレーターを改善しました。
_Router.map(function() { this.route("foo"); });
_そしてあなたは_
ember g route foo/bar
_を行いました生成されたルートは_Router.map(function() { this.route("foo"); this.route("foo/bar"); });
_ネストされたルートを適切に管理し続けるため、結果は次のようになります。
_Router.map(function() { this.route("foo", function() { this.route("bar"); }); });
_さらに、オプション_
--path
_が追加されたので、friends
の下にネストされたルートを作成する_ember g route friends/edit --path=:friend_id/id
_のようなことができます:this.route('edit', {path: ':friend_id/edit'})