一部の関連モデルを 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: {...}}}
たが、うまくいきませんでした。
ご協力いただきありがとうございます!ポール。