2010-04-02 17 views
9

dernekler 'içeren'. Eğer [0] .staff.inpsect sonucunu yerine getirirsem, o zaman personel verilerini aldım.dönüştürmek için nasıl kayıtları JSON

Sorun şu ki, bu personelin satırları da dahil olmak üzere AJAX'a JSON olarak dönmek istiyorum. Personel satırlarını dahil etmek için nasıl zorlayabilirim veya el ile bir şeyler mi oluşturmalıyım?

def show 
    @appointment = Appointment.find(:all, :include => :staff) 
    respond_to do |format| 
    format.html 
    format.js { render :json => @appointment.to_json(:methods => [:staff]) } 
    end 
end 

cevap

21

:includeto_json değil find için bir argümandır:

+5

: include, ActiveRecord :: Base # find ve ActiveRecord :: Serialization # to_json öğelerinin bir argümanıdır. Farklı şeyler yaparlar: #find (: include), ilişkili verileri, N + 1 sorguları yerine bir veya daha fazla SQL sorgusunda yükler. #to_json (: include), döndürülen JSON nesnesine eklenecek bir veya daha fazla ilişkilendirmeyi işaretler. #to_xml aynı şekilde davranır. –

+0

@AlexKorban Teşekkürler! Personel benzer şekilde JSON'a eklemek istediğiniz bir ebeveyne sahipse, bunu nasıl dahil edersiniz? Temel olarak şunu almak istiyorum:'@appointment.staff.manager.name – BKSpurgeon

1

kontrol dışarı ActiveRecord::Serialization ve ActionController::Base ("Rendering JSON" bölümüne bakınız). Ne kontrolörünüze yapmanız gereken şudur:

def return_json 
    @appointment = Appointment.find(:all) 
    respond_to { |format| 
    format.json { render :json => @appointment.to_json(:include => :staff) } 
    } 
end 

Çalışmak için kurulum için bunun için Atama ve personel arasında bir ilişki gerekir.

İlgili konular