0

ネストされたルートで編集フォームを読み込もうとしています。会社を編集するための URL である /companies/87/edit にアクセスすると、編集テンプレートが表示されますが、単一のモデルではなく、DS.RecordArray:ember314 が表示されます。これは、必要な 1 つのモデル オブジェクトを含む配列です。

ember314 は、会社のテンプレートのモデルで使用されているのと同じ配列であることに気付きました。CompanyEditRoute のモデルが {} を返すようにしてみましたが、その変更がテンプレートに反映されていることがわかります。配列内ではなく、必要なモデルのみを取得する方法がわかりません。

編集

ネストされたルートは、メイン ルートからモデル配列を拾い上げているだけのようです。適当なURLがヒットしたときに各Routeのモデルメソッドが呼び出されていることを確認したので、これは奇妙です。

App.Router.map(function() {
  this.resource('companies', function() {
    this.resource('company', { path: ':company_id' }, function() {
      this.route('edit');
    });
  });  
});


App.CompanyEditRoute = Ember.Route.extend({
  model: function(params) {
    return App.Company.find(params.company_id);
  },

  renderTemplate: function() {
    this.render({into: 'application', outlet: 'modal'});
  }
});
4

1 に答える 1

1

ただの予感ですが、renderTemplate フックで render を使用する場合、コントローラーを指定していないため、コントローラーを破棄して親コントローラーを使用している可能性があります。

ドキュメントを調べましたが、このようなものだと思います

renderTemplate: function(controller, model) {
  this.render({into: 'application', outlet: 'modal', controller: controller});
}
于 2013-11-01T14:30:34.133 に答える