rails渲染json嵌套两个级别

时间:2015-02-26 14:42:18

标签: ruby-on-rails ruby-on-rails-4

如何将关联扩展到多个级别?现在我可以展开reviews,但我不确定如何展开the patient_profile_id

class Review
   belongs_to :patient_profile
end

render json: doctors.to_json(
      :include => {:reviews => {:include => :patient_profile_id }}
)

3 个答案:

答案 0 :(得分:2)

我强烈建议您查看jbuilder gem。有great railscast解释了它的用法。

基本上,您必须在视图中添加一个jbuilder文件,这样您就可以对json进行更多控制。

对于您的特定用例,您可以使用以下内容:

<强>医生/ index.json.jbuilder

json.doctors @doctors do |json, doctor|
  json.(doctor, :id, :name)

  json.reviews doctor.reviews do |json, review|
    json.(review, :id, :rating, :patient_profile_id)

    json.patient_profile review.patient_profile do |json, profile|
      json.(profile, :id, :name, ... ) # attributes of the profile
    end
  end
end

答案 1 :(得分:1)

尝试使用以下内容:

render json: doctors.to_json(
      :include => {:reviews => {:include => :patient_profile  }}
)

Here您可以找到有关如何序列化嵌套对象的详细信息。

答案 2 :(得分:-1)

检查覆盖as_json方法