自定义Serializer的输出

时间:2013-03-13 03:45:35

标签: ruby-on-rails-3.2 active-model-serializers

所以我想使用最近添加到rails的新[ActiveModel::Serializer][1]

如果我像这样编写序列化器:

class PatientSerializer < ActiveModel::Serializer
  attributes :patient_money, :doctor_name

  def doctor_name
    object.doctor.name
  end
end

我得到的JSON是这样的:

[
// HERE.... 
   {
      "patient_money":"40.0",
      "doctor_name":"Ostad"
   },
   {
      "patient_money":"30.0",
      "doctor_name":"Oz"
   },
   {
      "patient_money":"20.0",
      "doctor_name":"Phil"
   }
]

这与我想要的非常接近但是在我上面放置“HERE”注释的地方,我想要一个更多的JSON包装层,所以我可以说例如my_results然后那个将这三个JSON结果包围在它周围就像一个数组,就像我们在JBuilder中创建一个新元素时说json.my_results

1 个答案:

答案 0 :(得分:2)

好的我明白了。 在发送respond_with(@blah)控制器中,我应该传递一个根元素并将其命名为我喜欢的名称,例如:

respond_with(@blah, root: 'my_results')