Подтвердить что ты не робот

Возврат определенного кода статуса http в Rails

Как вернуть 503 Service Unavailable в Rails для всего приложения?

Кроме того, как вы будете делать то же самое для определенных контроллеров?

4b9b3361

Ответ 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 визуализации, похоже, не работает с вышеуказанным оператором.