我正在开发REST API,在将结果(从带有ACtiveRecord的数据库中获取)发送到客户端之前,我需要使用一些额外的数据来扩展它。以下是我的假设:
def index
(categories = Category.all()).each() do |category|
category.image = "some image"
end
render json: categories
end
似乎Ruby不会像JS那样动态添加对象比例,所以这段代码最终会出现错误消息
undefined method `image=' for #<Category:0x007f89f0513d40>
我阅读了很多内容并找到了在attr_accessor :image
模型中添加Category
的解决方案。现在它不会抛出错误,但JSON输出中也没有出现image
属性。
答案 0 :(得分:3)
不是自己玩这个对象,你可能需要花几分钟来了解jbuilder是如何工作的,它非常简单,它会让你的生活变得更轻松,特别是当json格式包含一个来自原始数据库对象的额外/不同数据, 这是您可能做的简单格式
# app/views/categories/index.json.jbuilder
json.array! @categories do |category|
json.prop1 category.prop1
json.prop2 category.prop2
json.image whatever_image_function_here
end
其他解决方案将覆盖类
的as_json
方法
答案 1 :(得分:1)