2010-03-16 2 views
1

Я новичок в Rails и выполняю руководство по rails webpage. Используя команду эшафота, чтобы создать «пост» модель, я обнаружил, что new действия в контроллере имеет специальную директиву для формата XML:Почему в Rails «новое» действие есть директива формата XML?

def new 
    @post = Post.new 

    respond_to do |format| 
    format.html # new.html.erb 
    format.xml { render :xml => @post } 
    end 
end 

Я не могу видеть рассуждения для поддержки запроса XML когда создавая новый пост. Просмотр в /posts/new.xml ничего не возвращает. Какова цель этого?

ответ

3

Причина в том, что за действием new просто предоставить клиенту xml данные по умолчанию (или что-то еще, если хотите).

Директива формата используется всеми маршрутами, и вам не нужно поддерживать формат, если вы этого не хотите.

Приведенный выше код может, возможно, также выглядели как:

respond_to do |format| 
    format.html # renders new.html.erb 
    format.xml { render :xml => {:message => "XML is not supported"} } 
    format.json { render :text => @post.to_json } 
    format.js # renders new.js.erb 
end 

Кроме того, это не ограничивается new действием, но во всех своих действиях. Используемый формат берется из URL-адреса (если маршрут настроен для его использования) или из заголовка HTTP-Accept, отправляемого браузером.

Смежные вопросы