如果我做這樣的事情:如何轉換記錄,包括「包括」協會JSON
result = Appointment.find(:all, :include => :staff)
logger.debug { result.inspect }
那麼它只能打印出預約數據,而不是相關的人員數據。 如果我做結果[0] .staff.inpsect然後我得到當然的人員數據。
問題是我想返回到AJAX作爲JSON,包括職員行。我如何強制它包含職員行,或者我必須循環並手動創建一些內容?
如果我做這樣的事情:如何轉換記錄,包括「包括」協會JSON
result = Appointment.find(:all, :include => :staff)
logger.debug { result.inspect }
那麼它只能打印出預約數據,而不是相關的人員數據。 如果我做結果[0] .staff.inpsect然後我得到當然的人員數據。
問題是我想返回到AJAX作爲JSON,包括職員行。我如何強制它包含職員行,或者我必須循環並手動創建一些內容?
:include
爲to_json
,不find
參數。你需要在你的控制器上做的是:
def return_json
@appointment = Appointment.find(:all)
respond_to { |format|
format.json { render :json => @appointment.to_json(:include => :staff) }
}
end
你需要在Appointment和Staff之間建立一個關聯才能工作。
退房ActiveRecord::Serialization和ActionController::Base(參見: 「渲染JSON」)
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
:include是ActiveRecord :: Base#find和ActiveRecord :: Serialization#to_json的參數。他們做了不同的事情:#find(:include)將關聯的數據加載到一個或多個SQL查詢中,而不是可怕的N + 1查詢。 #to_json(:include)將一個或多個關聯標記爲包含在返回的JSON對象中。 #to_xml的行爲方式相同。 – 2010-04-02 23:16:30
@AlexKorban謝謝!如果工作人員同樣有一個你想包含在JSON中的父項,你會如何包含它?基本上我想得到:'@appointment.staff.manager.name – BKSpurgeon 2016-07-27 08:15:11