我希望以两种不同的方式呈现我的json。我现在重写了我的as_json方法,以json形式显示一个完整的对象,如下所示:
{
prop1: stuff,
prop2: stuff,
innerthings: {
{
prop1:stuff,
prop2:stuff
}
{
prop1:stuff,
prop2:stuff
}
}
}
as_json看起来像:
#Renders json
def as_json(options={})
super(
:except => [:created_at, :updated_at],
:include => [{:innerthings = > {
:except => [:created_at, :updated_at]
}}]
)
end
我还希望有第二个选项来渲染:
{
prop1:stuff,
prop2:stuff,
countinnerthings:10
}
当前使用下面的代码时,我得到第一个渲染:
respond_to do |format|
format.json { render json: @thing}
end
我也希望能够使用as_list这样的东西进行渲染,我可以在下面这样的情况下使用它来渲染一个简单的对象列表。
respond_to do |format|
format.json { render json: @things.as_list }
end
在ruby on rails上有一种简单的方法吗?
答案 0 :(得分:3)
而不是滚动自己的as_json方法。看看ActiveModel Serializers。我认为它将满足您的用例并帮助组织您的代码。
答案 1 :(得分:1)
您只需定义as_list
方法
def as_list
{
prop1: "stuff"
}
end
如果您需要使用包含等,可以使用as_json
方法拨打at_list
。如前所述,序列化器通常是更好的选择。