2015-02-26 4 views
0

Как я могу расширить ассоциации более чем на один уровень глубины? Прямо сейчас я могу расширить reviews, но я не уверен, как развернуть the patient_profile_id?рельсы рендеринга json вложенные два уровня

class Review 
    belongs_to :patient_profile 
end 

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

Эй, мой ответ для вас работу? –

+0

@ TheChamp собирается дать ему попробовать завтра, я дам вам знать – user2954587

ответ

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 
+0

, похоже, это не отвечает на мой вопрос. вы все равно возвращаете файл patient_profile_id вместо фактического профиля. – user2954587

+0

Легко углубить гнездование. Я обновил свой ответ, чтобы получить реальный профиль. –

-1

Проверьте, переопределить метод as_json

1

Попробуйте использовать что-то вроде этого:

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

Here вы можете найти подробную информацию о том, как сериализовать вложенные объекты.