的respond_to(*類型,&塊)公共 沒有網絡的服務支持,它收集的數據顯示的人的名單看起來是這樣的一個動作:
def index
@people = Person.find(:all)
end
以下是相同的操作,其中支持Web服務支持:
def index
@people = Person.find(:all)
respond_to do |format|
format.html
format.xml { render :xml => @people.to_xml }
end
end
這就是說,「如果客戶端爲了響應這個動作,我們只需迴應HTML,但是如果客戶端需要XML,就會以XML格式返回人員列表。「 (Rails根據客戶端提交的HTTP Accept報頭確定所需的響應格式。)
假設您有添加新用戶的操作,如果尚未存在,可選擇創建其公司(按名稱) -Services,它可能是這樣的:
def create
@company = Company.find_or_create_by_name(params[:company][:name])
@person = @company.people.create(params[:person])
redirect_to(person_list_url)
end
這是同樣的動作,在烤的Web服務支持:
def create
company = params[:person].delete(:company)
@company = Company.find_or_create_by_name(company[:name])
@person = @company.people.create(params[:person])
respond_to do |format|
format.html { redirect_to(person_list_url) }
format.js
format.xml { render :xml => @person.to_xml(:include => @company) }
end
end
如果客戶想HTML,我們只是重定向他們回到人名單。如果他們想要Javascript(format.js),那麼它是一個RJS請求,我們呈現與此動作相關聯的RJS模板。最後,如果客戶想要XML,我們渲染的創建人如XML,但與一捻:我們還包括人的公司在渲染XML,所以你得到的東西是這樣的:
http://apidock.com/rails/ActionController/MimeResponds/InstanceMethods/respond_to