У меня есть простая форма для отправки изображения, например:
<%= form_tag avatar_item_path(@tutorial, :format => :js), :method => :post, :remote => true do %>
<%= file_field_tag :item_avatar, :name => "item_image[image]" %>
<% end %>
(стрекоза обрабатывает изображение, если это как-то актуально)
Мое действие контроллера называется update_avatar, и в нем нет логики render или response_to (он просто вызывает методы поиска и сохранения), поэтому по умолчанию при запросе js отображается update_avatar.js.erb.
update_avatar.js.erb содержит функцию js и $(function () { // some code here })
В FF, Chrome и Safari это отлично работает.
Проблема: IE9 хочет сохранить ответ как avatar.js
Используя инструменты разработчика, я вижу, что запрос отправляется и принимается правильно, и тип содержимого ответа "text / javascript; charset = utf-8"
Я попытался вручную установить тип содержимого для application / javascript, но это не дало эффекта.
Как другие предлагали в другом месте, если я установлю тип содержимого в text / html, IE9 не предложит мне сохранить его, но в этом случае ни один из браузеров не будет оценивать js в ответе (я помещаю js в теги скрипта).
По результатам поиска кажется, что около года назад другие испытывали ту же проблему, и их решением было обновить jquery, так как прошел год, у меня гораздо более новая версия. Возможно, это регрессия?
Я использую последний гем jquery-rails, 1.0.19, который включает в себя jquery 1.7.1, а также последнюю версию https://github.com/rails/jquery-ujs (я сделал diff, чтобы убедиться).