在我的控制器的索引操作中,我返回一个应该渲染为JSON的Picture模型数组。
def index
@pictures = Pictures.all
respond_to do |format|
format.json { render json: @pictures.to_json( include: [:imageable] ) }
end
end
此模型配置了多态关联。
class Picture < ActiveRecord::Base
belongs_to :imageable, :polymorphic => true
end
class Employee < ActiveRecord::Base
has_many :pictures, :as => :imageable
attr_accessible :name
end
class Product < ActiveRecord::Base
has_many :pictures, :as => :imageable
attr_accessible :type
end
图片数组将包含Picture对象,其中包含与Employee和Product的可成像关联。如何向json呈现可成像关联对象不同包括Employeee和Product特定字段?
谢谢你, 阿萨夫
答案 0 :(得分:2)
我建议你使用类似JBuilder的东西来构建你的json响应。
然后,使用您的逻辑创建一个名为index.json.jbuilder的模板文件来构建您的json。
您可以根据对象轻松构建json。
例如:
json.array! @pictures do |picture|
json.picture_attribute1 = picture.picture_attribute1
json.picture_attribute2 = picture.picture_attribute2
if picture.imageable.is_a?(Employee)
json.employee_name = picture.imageable.name
else
json.product_name = picture.imageable.name
end
end
请查看JBuilder的文档,了解如何使用它。