Я спасаю несанкционированное исключение и хочу сделать предупреждение в этом блоке аварийного восстановления. Поскольку это в моем контроллере приложений, это спасение может быть удалено в нескольких форматах, поэтому мне нужен блок respond_to
.Оповещение об исключении извещения в rescue_from using response_to
Если я делаю это без respond_to
, все работает нормально. Статус установлен на 401, и я вижу, что сообщение об исключении исключительных ситуаций мигает.
render :json => exception.message, :status => 401
Однако, если я делаю то же самое внутри repond_to
блока, ничего не работает. Статус не устанавливается, и сообщение об исключении не отображается.
respond_to do |format|
format.json { render :json => exception.message, :status => 401 }
end
В чем проблема? Я просмотрел массу примеров, и кажется, что он должен работать, но статус и сообщение, похоже, игнорируются.
В первом варианте вы оказываете ответ на все запросы к действию контроллера, несмотря на то, что их формат. Второй вариант определяет ответ только для запросов формата json, например. '/ Пример/new.json'. Если вы сделаете запрос к вашему действию, например, этот '/ example/new', он вернется в html-формат, для которого вы не определяете статус и сообщение. См. Этот вопрос и ответ для получения дополнительной информации: http://stackoverflow.com/questions/9492362/rails-how-does-the-respond-to-block-work –