Без поддержки веб-сервиса действие по сбору данных для отображения списка людей могло бы выглядеть примерно так:
def index
@people = Person.find(:all)
end
Вот то же действие с встроенной поддержкой веб-сервисов:
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, отправленного клиентом.)
Предположим, у вас есть действие, которое добавляет нового человека, при необходимости создавая его компанию (по имени), если она еще не существует, без веб-сервисов, это может выглядеть так:
def create
@company = Company.find_or_create_by_name(params[:company][:name])
@person = @company.people.create(params[:person])
redirect_to(person_list_url)
end
Вот то же действие с встроенной поддержкой веб-сервисов:
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