1

一部の関連モデルを ember-data でロードする際に問題が発生しています。これは私の側の構文エラーであると確信していますが、それを見ることができません。もしかしたら、誰かが私にとって第二の目になるかもしれませんか?

特定の問題は、関連するモデルがテンプレートに表示されないことです。

難しい話は抜きにして:

ノート

  • を使用してember-appkit-railsいます。
  • これは私の最初の ember プロジェクトです。
  • 答えは「常に」埋め込みと関係があるかもしれないと感じていますが、それをコードに統合する方法がわかりません。
  • デバッグ: Ember: 1.4.0 ember.js?body=1:3462
  • デバッグ: Ember データ: 1.0.0-beta.7+canary.f482da04 ember.js?body=1:3462
  • デバッグ: ハンドルバー: 1.3.0 ember.js?body=1:3462
  • デバッグ: jQuery: 1.11.0 ember.js?body=1:3462

問題のあるテンプレ

これはうまくいくはずだと思います。これは、ember-appkit-rails ジェネレーターのすぐそばにあります。台本作家と作曲家の名前は表示されません。

<h3>{{id}}</h3>

<p>{{link-to 'Edit' 'operas.edit' this}} <button {{action destroyRecord this}}>Destroy</button></p>

<ul>
  <li>Title: {{title}}</li>
  <li>Alternate Title: {{alternate_title}}</li>
  <li>Source: {{source}}</li>
  <li>Librettist: {{librettist.name}}</li>
  <li>Composer: {{composer.name}}</li>
  <li>Notes: {{notes}}</li>
</ul>

モデル

オペラ.js.es6

export default DS.Model.extend({
  title: DS.attr('string'),
  alternateTitle: DS.attr('string'),
  source: DS.attr('string'),
  librettistId: DS.attr('number'),
  composerId: DS.attr('number'),
  notes: DS.attr('string'),
  composer: DS.belongsTo('composer'),
  librettist: DS.belongsTo('librettist')
});

librettist.js.es6

export default DS.Model.extend({
  name: DS.attr('string'),
  operas: DS.hasMany('opera')
});

composer.js.es6

export default DS.Model.extend({
  name: DS.attr('string'),
  operas: DS.hasMany('opera')
});

ActiveModel シリアライザー

class OperaSerializer < ActiveModel::Serializer
  embed :ids, include: true

  attributes :id, :title, :alternate_title, :source, :librettist_id, :composer_id, :notes
  has_one :composer
  has_one :librettist
end

返される JSON の例

これは私が 1 つのオペラ レコードを見たときにわかることですが、この構造はセット全体に当てはまります。

{
  "composers": [
    {
      "id": 4097,
      "name": "Müller, Wenzel"
    }
  ],
  "librettists": [
    {
      "id": 1414,
      "name": "Bäuerle, Adolf"
    }
  ],
  "opera": {
    "alternate_title": "oder Wien in einem anderen Weltteile",
    "composer_id": 4097,
    "id": 4166,
    "librettist_id": 1414,
    "notes": "these are some notes",
    "source": "F116.Theater.a.d.Wien.260A.Mus; Mus.Hs.78.Mus; Mus.Hs.25409.Mus",
    "title": "Aline Königin von Golkonda"
  }
}

インライン埋め込み ( ) を使用してこのアプローチも試しまし{opera: {...composer: {...}}}たが、うまくいきませんでした。

ご協力いただきありがとうございます!ポール。

4

1 に答える 1