0

所以我有这段代码:

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

这行得通。但我只想要某些属性。我看到了这个:在rails 3中过滤json渲染,其中是这样的:

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

它可以工作,但它返回没有标签的数据,就像这样:

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

我想要其中的“:objects =>”标签。谢谢

4

2 回答 2

2

有关高级 json 序列化,请查看Active Model Serializers

于 2013-03-08T07:55:51.963 回答
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 }

因此,要添加键过滤返回的属性,您必须执行相同的操作,然后手动调用 as_json (这就是 Rails 为简单地返回整个集合所做的事情)并带有:only应用过滤器的选项。

是否使用respond_to块取决于您的需要。

于 2013-03-08T08:23:41.640 回答