总计我有以下代码:
def search
@regions = Region.search(params[:searchPhrase]).page(params[:current].to_i).per_page(params[:rowCount].to_i)
data = {
current: @regions.current_page,
rowCount: @regions.per_page,
total: @regions.count,
rows: @regions
}
respond_with(data)
end
这给了我一个输出:
{total: 20, current: 2, rowCount: 10, rows: [{id: 1, name: "Region"}, ...]}
这很好用,但我想在整个应用程序中使用相同的格式。
我已经阅读了一些有关ActiveModel Seralizers gem的内容,但我无法找到以下方法:
有谁知道如何实现这个目标?
答案 0 :(得分:0)
您可以像这样创建RegionSerializer
:
class RegionSerializer
attributes :current,
:rowCount,
:total,
:regions
def regions
# get the regions here
end
end
然后,在您的控制器中,您可以拥有以下内容:
def search
render(
root: :your_custom_root_name,
json: rows,
each_serializer: RegionSerializer
)
end
private
def rows
# get collection_of_objects/rows here
end
您可以使用root
选项指定root
元素的名称和each_serializer
选项,以指定用于渲染对象集合的序列化程序,如上所示。