gpt4 book ai didi

javascript - Ember.js/Rails 嵌套 JSON

转载 作者:行者123 更新时间:2023-11-30 05:41:00 27 4
gpt4 key购买 nike

我正在开发一个基本的 Ember/Rails 应用程序,它有一堆嵌套关系,例如:

class Release < ActiveRecord::Base
has_many :tracks
end

当我到达我的 Releases 端点时,我得到了一些像这样的可爱的 JSON:

{
releases: [{
id: 1,
name: "Release Name",
artist: "Artist Name",
tracks: [{
id: 1,
name: "Track 1",
},
{
id: 2,
name: "Track 2",
}]
}]
}

我已经阅读了几乎所有我能在网上找到的关于这方面的内容。我如何将“Track”模型映射到 Ember,以便我可以同时显示一个版本及其轨道?

DS.hasMany? 异步:真嵌入:真?这些都不适合我。

版本:

  • Ember:1.4.0-beta.1+canary.011b67b8
  • Ember 数据:1.0.0-beta.5+canary.d9ce2a53
  • Handlebars :1.1.1
  • jQuery: 1.10.2

最佳答案

以下对我有用 Active Model SerializerDS.RESTAdapter

Rails 用户模型:

class User < ActiveRecord::Base
has_many :photos
end

Rails 用户序列化程序:

class UserSerializer < ActiveModel::Serializer
attributes :id, :name
has_many :photos, embed: :ids, key: "photos", include: true
end

(神奇的是 has_many 的参数。这意味着它们被添加为第二个数组而不是嵌入式数组,它还将关联的标题设置为 photos 这就是 Ember默认需要)

这使得 Rails 返回如下所示的 JSON:

{
user: {
id: 1,
name: "Joe Bloggs",
photos: [1,2]
},
photos: [
{
id: 1,
imageSrc: "/photo1.jpg"
},
{
id: 2,
imageSrc: "/photo2.jpg"
}
],
}

然后在 Ember 中我这样定义用户模型:

App.User = DS.Model.extend({
photos: DS.hasMany('photo'),
name: DS.attr("string")
});

最后我定义了一个加载用户模型的路由:

App.UserShowRoute = Ember.Route.extend({
model: function(params){
return this.store.find('user', params.user_id);
}
});

关于javascript - Ember.js/Rails 嵌套 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20823010/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com