Почему в «новом» действии Rails есть директива формата XML? - PullRequest
1 голос
/ 17 марта 2010

Я новичок в Rails и следую инструкциям на веб-странице rails . Используя инструкцию scaffold для создания модели "post", я обнаружил, что действие new в контроллере имеет специальную директиву для формата 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 ничего не возвращает. Какова цель этого?

1 Ответ

3 голосов
/ 17 марта 2010

Причина действия 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, который отправляет браузер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...