1

私は現在、すべてのボートがルート/にあり、特定のボートに行くことができるようにルートをセットアップしています。/boats/:boat_id

何らかの理由で、ID を のままにしておくと:boat_id、ルートはボートを表示せず、コンソールに次のエラーをスローします。

アサーションに失敗しました: 未定義のオブジェクトで 'id' を使用して get を呼び出すことはできません。

just に変更すると:id、ルートは正常に機能しますが、/boats/{any id}機能しません。何か案は?

これが私のコードです:

BoatBuilder.Router.map(function() {
  this.resource('boats', { path: '/' });
  this.resource('boat', { path: '/boat/:boat_id' }, function() {
    this.route("motor");
    this.route("accessories");
  });

  this.route("summary");
});

BoatBuilder.BoatsRoute = Ember.Route.extend({
  model: function () {
    return BoatBuilder.Boat.find();
  }
});

BoatBuilder.Boat = DS.Model.extend({
  iem_name: DS.attr('string'),
  url_text: DS.attr('string'),
  price_retail: DS.attr('number')
});
4

3 に答える 3

1

モデルが URL で id プロパティを使用しない場合は、ルートで serialize メソッドを定義する必要があります。http://emberjs.com/guides/routing/defining-your-routes/を参照してください。

また、#linkTo を介して /boats/:boat_id にアクセスしている場合は、ルーターにシリアル化フックも追加する必要があります。

上に貼り付けた ember ガイドのリンクから改作すると、次のようになります。

 App.Router.map(function() {
    this.resource('boat', { path: '/boat/:boat_id' };
 });

 App.BoatRoute = Ember.Route.extend({
      model: function(params) {
           // the server returns 

      },

    serialize: function(model) {
       // this will make the URL `/boat/:boat_id`
     return { boat_id: model.id };
    }
 });

必要に応じて調整する必要がある場合があります。

于 2013-07-17T23:44:58.943 に答える
0

boats内部にネストされたルートがないため、リソースが必要だとは思わないでください。だから試してください:

BoatBuilder.Router.map(function() {
  this.route('boats', { path: '/' });
  this.resource('boat', { path: '/boat/:boat_id' }, function() {
    this.route("motor");
    this.route("accessories");
  });

  this.route("summary");
});
于 2013-07-17T20:39:42.730 に答える