рельсы отправляют неправильный тип контента в ответе ajax

Я ужасно боролся большую часть дня со следующей проблемой:

  • У меня есть приложение rails 3.1 - работает нормально
  • Я пытаюсь добавить к нему ajax

Однако, что бы я ни пытался, Rails настаивает на отправке неверного типа контента в заголовке ответа.

#the form    
= form_for @signup, :url => '/signup', :remote => true do |f|
    = f.text_field :email, :class => 'email', :size => 26
    = f.submit 'Notify me'

#In the controller
def create
  respond_to do |format|
    format.js { render :content_type => 'text/javascript', :layout => false}
  end
end

#the JS file: create.js.erb
alert('HI!');

Это не работает, хотя я думаю, что должно. Проверка ответа сервера с помощью Firebug говорит мне, что заголовок ответа имеет тип содержимого text/html. Я полагаю, именно поэтому оно не работает (как в недавно сгенерированном приложении, использующем тот же гем jquery-rails, который отвечает заголовком text/javascript.

Сервер говорит, что отвечает JS:

Processing by SignupsController#create as JS

Но почему-то отказывается отправлять правильный заголовок. Я теряюсь в том, где искать дальше.

Любая помощь или направление относительно того, где искать дальше, будет принята с благодарностью! Эрвин


person ErwinM    schedule 20.09.2011    source источник


Ответы (1)


Хорошо нашел решение,

Таким образом, after_filter в контроллере приложения переопределял тип содержимого. И они обработаны наизнанку. Так что это перезаписывало мои декларации.

person ErwinM    schedule 20.09.2011
comment
Спасибо! Это направило меня по правильному пути. Постфильтр в приложении явно устанавливал для заголовков ['Content-Type'] значение text/html. Из-за этого я не смог установить content_type в блоке response_to обычным способом. Я смог перезаписать его, вызвав headers['Content-Type'] = 'text/javascript' в блоке ответа. - person Mark Swardstrom; 05.06.2012