-2

EmberJS 2.7 エラー: アサーションに失敗しました:id渡されたものfindRecord()は空でない文字列または数値でなければなりません

app/templates/products/index.hbs: [モデル内/各ループにこの行があります]:

{{#link-to 'categories.edit' product.category.id}}<a href="">{{product.category.name}}</a>{{/link-to}}

app/router.js: [これらのルートを定義しました]:

  this.route('products', function() {
    this.route('new');
    this.route('edit', { path: '/:product_id/edit' });
  });

  this.route('categories', function() {
    this.route('new');
    this.route('edit', { path: '/:category_id/edit' });
  });

製品を編集するときに機能します。ただし、カテゴリを編集しようとすると、上記のエラーがスローされます。

「categories/edit」ルートを削除し、代わりにこのルートを追加すると:

this.route('category', { path: '/categories/:category_id/edit' });

それを使用するようにテンプレートを変更します。

{{#link-to 'category' product.category.id}}<a href="">{{product.category.name}}</a>{{/link-to}}

その後、動作します。この2番目が機能する理由を理解しています。しかし、なぜ最初のものは機能しないのでしょうか?

編集:ここにモデルがあります

アプリ/モデル/product.js:

import DS from 'ember-data';

export default DS.Model.extend({
  name: DS.attr('string'),
  description: DS.attr('string'),
  category: DS.belongsTo('category', { async: true })
});

アプリ/モデル/category.js:

import DS from 'ember-data';

export default DS.Model.extend({
  name: DS.attr('string'),
  products: DS.hasMany('product')
});
4

1 に答える 1

1

修理済み。モデルのどこに findRecord を配置するかは重要です。カテゴリルートにこのコードがありました。正しいファイルに移動すると、問題が解決します。

app/routes/categories.js:

import Ember from 'ember';

export default Ember.Route.extend({
    model(params) {
        return this.store.findRecord('category', params.category_id);
    },
});

解決策:

app/routes/categories.js:

import Ember from 'ember';

export default Ember.Route.extend({
});

アプリ/ルート/カテゴリ/edit.js:

import Ember from 'ember';

export default Ember.Route.extend({
    model(params) {
        return this.store.findRecord('category', params.category_id);
    },
});
于 2016-08-23T11:52:30.213 に答える