过滤轨道3中的json渲染

时间:2013-03-08 07:42:52

标签: ruby-on-rails ruby-on-rails-3

所以我有这段代码:

 render :json => { :objects => @object.object_children }

这很有效。但我唯一想要的只是某些属性。我看到了这个:filter json render in rails 3,其中就是:

respond_to do |format|
format.json { render json: @objects.object_children, :only => [:id, :name] }
end

它有效,但它返回的数据没有标签,就像这样:

id":null,"name":"foo"

我想要“:objects =>”标签在里面。感谢

2 个答案:

答案 0 :(得分:2)

对于高级json序列化,请查看Active Model Serializers

答案 1 :(得分:1)

您必须将原始解决方案与找到的解决方案结合起来:

render :json => { :objects => @object.object_children.as_json(:only => [:id, :name]) }

编辑:解释

在原始解决方案中,您手动将密钥:objects =>添加到响应中。

render :json => @object.object_children
# vs
render :json => { :objects => @object.object_children }

因此,要添加键过滤返回的属性,您必须执行相同的操作,然后使用{{1}手动调用as_json(Rails将简单地返回整个集合的操作) }选项以应用过滤器。

如果您使用:only阻止取决于您的需要。