Как вернуть по-настоящему пустое тело в рельсы?т.е. длина содержимого 0 - PullRequest
13 голосов
/ 28 июля 2010

Я пытаюсь вернуть статус 200 с пустым телом, но rails возвращает тело с одним пробелом. то есть контент-длина 1

Например, этот код генерирует тело с одним пробелом

respond_to do |f|
  f.html {head :ok}
end

и это тоже

respond_to do |f|
  f.html {render :nothing => true}
end

Да, даже рендер: ничто не генерирует что-то.

Все это, кажется, вытекает из патча 2005 года в рельсах, который был разработан для исправления ошибки в Safari, когда он игнорировал заголовки, если тело было пустым. (http://dev.rubyonrails.org/changeset/1818)

Есть ли у кого-нибудь мысли о том, как получить статус 200, но с действительно пустым телом? Справочная информация: я использую API, который делает вызовы для моих контроллеров. Мне нужно отправить 200, но один пробел вызывает сбой API (ошибка синтаксического анализа ...). Кроме того, я буду развертывать на Heroku, поэтому я не могу исправить ActionPack, чтобы отменить хак 2005 года.

Спасибо за любые мысли.

1 Ответ

28 голосов
/ 28 июля 2010

Это похоже на работу

render :text => ""

Для Rails 3 вы можете использовать:

render :nothing => true

В Rails 5 render :nothing => true устарело (планируется удалить в 5.1)

Использование

def action
  head :ok
end

Кредит на этот вопрос для решения Rails 5.

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