【发布时间】:2016-08-27 06:52:27
【问题描述】:
我正在尝试按如下方式加载关联:
这是我的控制器,它正在尝试渲染 json。
#app/controllers/store/products_controller.rb
def customize
@option_types = OptionType.all
respond_to do |format|
format.json { render :json => @option_types}
end
end
这是上述对象的序列化器
#app/serializers/option_type_serializer.rb
class OptionTypeSerializer < ActiveModel::Serializer
attributes :id, :key, :customizable, :name
has_many :option_values
end
option_value belong_to option_type
#app/serializers/option_value_serializer.rb
class OptionValueSerializer < ActiveModel::Serializer
attributes :id, :key, :option_type_id, :percentage_price_impact, :fixed_price_impact, :absolute_price_impact, :name
end
这将生成以下 JSON。尽管在 option_value_serializer.rb 中指定了许多其他参数,但生成的 JSON 中只有 id 和 type 出现
// http://0.0.0.0:3000/products/810/customize.json
{
"data": [
{
"id": "1",
"type": "option-types",
"attributes": {
"key": "fabric",
"customizable": true,
"name": "FABRIC"
},
"relationships": {
"option-values": {
"data": [
{
"id": "1",
"type": "option-values"
},
{
"id": "2",
"type": "option-values"
}
]
}
}
},
{
"id": "2",
"type": "option-types",
"attributes": {
"key": "cuff-type",
"customizable": false,
"name": "CUFF TYPE"
},
"relationships": {
"option-values": {
"data": [
]
}
}
},
{
"id": "3",
"type": "option-types",
"attributes": {
"key": "vents",
"customizable": false,
"name": "VENTS"
},
"relationships": {
"option-values": {
"data": [
]
}
}
}
]
}
【问题讨论】:
标签: ruby-on-rails-4 active-model-serializers json-api