- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个模型,Project 和 Image,它们具有 has_many 关系(项目有很多图像)。我使用 Rails 作为 API,并在前端使用 Ember。
我遇到的问题是我无法将图像数据传递给 ember。
我有以下设置:
rails 结束
应用程序/模型/image.rb
class Image < ActiveRecord::Base
belongs_to :project
mount_uploader :project_image, ImageUploader
end
应用程序/模型/project.rb
class Project < ActiveRecord::Base
has_many :images, :dependent => :destroy
accepts_nested_attributes_for :images, allow_destroy: true
end
应用程序/序列化器/image_serializer.rb
class ImageSerializer < ActiveModel::Serializer
attributes :project_image, :project_id
end
应用程序/序列化器/project_serializer.rb
class ProjectSerializer < ActiveModel::Serializer
attributes :id, :client, :tags, :description, :start_date, :end_date
has_many :images
end
Ember 结束
应用程序/ Assets /javascripts/store.js
DS.RESTAdapter.reopen({
namespace: 'api/v1'
})
App.Store = DS.Store.extend({});
App.ApplicationAdapter = DS.ActiveModelAdapter.extend({});
应用程序/ Assets /javascripts/routes/projects.js
App.ProjectsRoute = Ember.Route.extend({
model: function() {
return this.store.find('project')
}
})
App.ProjectRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('project', params.project_id)
}
})
应用程序/ Assets /javascripts/models/project.js
App.Project = DS.Model.extend({
client: DS.attr('string'),
tags: DS.attr('string'),
description: DS.attr('string'),
start_date: DS.attr('string'),
end_date: DS.attr('string'),
images: DS.hasMany('image', {async: true})
});
应用程序/ Assets /javascripts/models/image.js
App.Image = DS.Model.extend({
project_image: DS.attr('string'),
project_id: DS.attr(),
project: DS.belongsTo('project')
});
当我访问 localhost:3000/api/v1/projects.json 时,我从中得到的 JSON 输出是
{
"project":
{
"id":8,
"client":"example client",
"tags":"example tag",
"description":"some description",
"start_date":"April 13",
"end_date":"June 13",
"images":[
{
"project_image":
{
"project_image":{"url":"/uploads/image/project_image/6/logo.jpg"}
},
"project_id":8
}
]
}
}
我很确定 ember 的格式是错误的,因为图像数据没有进入 chrome ember 检查器(除了没有图像之外,项目数据工作正常)。
如果有人对我的错误有任何想法,我将不胜感激!
最佳答案
您的输出 JSON 可以采用以下格式:
{
"project": {
"id": 8,
"client": "escapethecity",
"tags": "Wireframing, UI Design",
"description": "",
"start_date": "April 13",
"end_date": "June 13",
"images": [1],
},
"project_image": {
"id": 1,
"url": "/uploads/image/project_image/6/Eagle_logo_v7_no_tail.jpg",
"project_id": 8
}
}
因此,首先您需要指定图像的id
。然后,您可以通过在 project
属性中获取 id
数组的方式重构代码 ("images": [1]
)以及 project
中引用的所有项目图像的单独的 project_image
属性。
此外,如果您在一个请求中提供所有信息,则无需在关系中声明 async: true
。
希望对你有帮助:)
请注意,这是选项之一。您还可以检查DS.ActiveModelSerializer
; here's a nice explanation .
编辑:
我对序列化器的尝试(虽然只是枯燥的写作,可能会输入错误!):
export default DS.RESTSerializer.extend({
normalizePayload: function(payload) {
// transform the project image
payload.project_image = payload.project.images.map(function(image) {
return {
id: 1, // fake one!
url: image.project_image.project_image.url,
project_id: image.project_id,
project: image.project_id
};
});
// create project images ids (from the fake ones now...)
payload.project.images = payload.project_image.map(function(image) {
return image.id;
});
}
});
关于javascript - Ember 和 Rails has_many 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27967520/
我有一个具有以下模型的应用程序:- 类别- 子类别- 产品- 产品子类别 我的关系如下: Category has_many :subcategories Subcategory belongs_to
看来 rails 仍然不支持这种类型的关系并抛出 ActiveRecord::HasManyThroughAssociationPolymorphicThroughError 错误。 我该怎么做才能实
我想知道我可以在多大程度上使用 Rails 中的关联。考虑以下因素: class User :provider end class Provider :businesses belongs
我是 Rails 的新手。我想知道我是否需要将 add_index 添加到两个迁移? 我正在尝试定义用户和事件。每个用户可以有多个事件,每个事件可以有多个用户。所以我会做这样的事情: class Us
我有这个: class User :series end class Serial :serials end class Episode < ActiveRecord::Base belong
我一直致力于一个大量使用模型关联的项目,似乎我发现了 has_many 或 has_one through 功能与 :conditions 功能冲突的情况。简而言之,问题是 through 关联为 h
模拟以下情况的最佳方法是什么: Word belongs_to :wordable, :polymorphic => true Phrase has_many :words, :as => :
这似乎是一个典型的问题,但很难搜索。 我想选择用户通过 has_many 拥有的项目和用户通过 has_many through 关联的项目。 考虑以下模型: class User < ActiveR
首先对英语感到抱歉 所以我已经有了“用户 - 帖子”一对多关联,这意味着每个帖子只能有一个作者,现在我想在用户个人资料中添加“最喜欢的帖子”按钮,以及“添加到收藏夹”按钮每个帖子,所以问题是如何实现这
我有一个用户模型,允许用户关注其他用户。每个用户也有很多东西: class User has_many :following, :class_name => 'Followings', :fore
我正在使用 Rails 4.1 和 Ruby 2.1。 一个用户 has_many 辆车,和一辆车 has_many 约会。获取所有用户约会的最简单方法是什么? 理想情况下,我想做这样的事情:user
我想为 has_many/has_many 关系定义一个工厂(我想我做对了)但是我不知道如何为这些创建的工厂的每个对象定义属性。 这是主页,这是交易卡片的列表 我们假设下面的主页 View 是针对登录
我正在努力弄清楚如何实现这个计数。模型是用户、测试、等级 用户 has_many 测试,测试 has_many 成绩。 每个等级都有一个计算分数(strong_pass、pass、fail、stron
我有一个 has many through 关系来定义用户已回答的问题。 如何为用户创建的问题建立关系? 通常你会在用户和问题之间创建一个 has_many 和 belongs_to 关系,但是因为我
例如,在 class Student < ActiveRecord::Base has_many :awards end class Awards < ActiveRecord::Base b
我仍然在尝试如何处理在Ecto中创建/更新has_many, through:关联。我已经重新阅读了José's关于关联以及the docs的帖子,但我仍在努力。 我所拥有的是: 网站/模型/dish
# == Schema Information # # Table name: orders # # id :integer not null, pri
我正在尝试从 EventView.promoter_id = User.id 的用户获取事件,但它无法正常工作。这是我的设置(目前不正确): User has_many :events has_man
我有三门课 TeamMember , Service和ServiceTeamMember 我有 class Service has_many :service_team_members has
我需要列出所有用户及其销售的产品总量及其电子邮件和产品总量, class User :user).group('users.email').sum(:quantity) 关于mysql - 事件记录
我是一名优秀的程序员,十分优秀!