Возврат определенного кода статуса http в Rails
Как вернуть 503 Service Unavailable в Rails для всего приложения?
Кроме того, как вы будете делать то же самое для определенных контроллеров?
Ответы
Ответ 1
Для всего приложения:
# ApplicationController
before_filter :return_unavailable_status
private
def return_unavailable_status
render :nothing => true, :status => :service_unavailable
end
Если вы хотите создать страницу пользовательской ошибки, вы можете сделать следующее:
render 'custom_unavailable_page', :status => :service_unavailable
Если вы не хотите его использовать для определенных контроллеров:
# SomeController
skip_before_filter :return_unavailable_status
Ответ 2
Вы можете использовать :status
render :status => 503
Вы можете сделать это глобально, поместив его в ApplicationController
before_filter :render_unavailable
def render_unavailable
render :nothing => true, :status => 503
end
Update
Рельсы 5 +
head 503
# or
head :service_unavailable
Не ставьте render head: 503
только голову. В противном случае вы получите двойную ошибку рендеринга.
Ответ 3
Для меня работает следующее:
format.any { render :json => {:response => 'Unable to authenticate' },:status => 401 }
:response
для ответа HTML на случай, если он будет доступен из браузера.
Головка 503 визуализации, похоже, не работает с вышеуказанным оператором.