私は最初の rails/ember アプリを作成しており、チュートリアルや ember のドキュメントからさまざまな情報源を調べています。しかし、私は壁にぶち当たり、何度も掘り下げた後も、探している答えを見つけることができません。現在、インデックスページがリレーションシップであり、リレーションシップには多くの受信者がいる GiftList Rails/Ember アプリを構築しています。現在、リレーションシップが表示されており、各リレーションシップの受信者の数を表示したいのですが、実際にはリレーションシップの少なくとも 1 つに受信者が 1 人いる場合 (家族には 1 つのレコードがあります)、各リレーションシップは 0 と表示されます。Ember インスペクタでデータを確認すると、GiftList.Recipient には 1 つのレコードがあり、GiftList.Relationship には 4 つのレコードがあります。正しい数の受信者レコードを正しく表示するにはどうすればよいですか?
ルート
Router.js.coffee:
GiftList.Router.map ->
@resource 'relationships', { path: '/' }, ->
@resource 'relationship', { path: ':relationship_id' }, ->
@resource 'recipients', { path: 'recipients' }, ->
@resource 'recipient', { path: ':recipient_id'}
Relationship_route.js.coffee:
GiftList.RelationshipsRoute = Ember.Route.extend
model: ->
@store.find('relationship')
recipients_route.js.coffee:
GiftList.RecipientsRoute = Ember.Route.extend
model: ->
@store.find('recipient')
コントローラー
Relationship_controller.js.coffee:
GiftList.RelationshipsController = Ember.ArrayController.extend({})
relationship_controller.js.coffee:
GiftList.RelationshipController = Ember.ArrayController.extend
recipients: GiftList.Recipient.find()
モデル
関係.js.コーヒー:
GiftList.Relationship = DS.Model.extend
name: DS.attr('string')
recipients: DS.hasMany('recipient')
受信者.js.コーヒー:
GiftList.Recipient = DS.Model.extend
first_name: DS.attr('string')
last_name: DS.attr('string')
relationship: DS.belongsTo('relationship')
テンプレート
関係.ハンドルバー:
<h2>Relationships</h2>
<ul id="relationships">
{{#each}}
<li>{{name}}({{recipients.length}})</li>
{{/each}}
</ul>
*アップデート***
シリアライザー
class RecipientSerializer < ActiveModel::Serializer
embed :id
attributes :id, :first_name, :last_name
has_one :relationship, key: :relationship
end
class RelationshipSerializer < ActiveModel::Serializer
embed :ids, include: true
attributes :id, :name
has_many :recipients, key: :recipients
end
他のすべてのコードは同じままでした