Коды состояния железной дороги и XML
Контроллер:
class CategoriesController < ApplicationController
def create
@category = Category.create(...)
respond_to do |format|
if @category.save
format.xml { :status => :created }
else
format.xml { :status => :unprocessable_entity }
end
end
end
end
Посмотреть:
xml.instruct! :xml, :version => "1.0"
xml.response do
xml.status( STATUS )
xml.code( STATUS CODE )
end
Как вы можете видеть, я установил код состояния в своем действии создания контроллера. Мой вопрос заключается в том, как я могу прочитать этот код состояния изнутри (например, СТАТУС КОД должен быть числом, например, 200 для ОК, СТАТУС должен быть строкой, такой как "ОК", "Несанкционированный"). Я знаю, что могу создать переменную, например, @status = 'ok', но я не хочу дублировать код. Спасибо за ответ!
1 ответ
Решение
Вы передаете переменные из контроллера в представление в Rails, используя переменные экземпляра:
xml.instruct! :xml, :version => "1.0"
xml.response do
xml.status(@status)
xml.code(@status_code)
end
Однако я не понимаю, почему клиент получит статус и код состояния из возвращенного XML, когда эта информация уже доступна ему из ответа HTTP, то есть HTTP 200 OK. Предоставление его в XML также является излишним.