RJS не работает с IE

Мой код:

# app/controllers/log_controller.rb

class LogController < ApplicationController
  def in
    @user = User.login(params[:login])
    respond_to do |format|
      format.js
    end
  end
end

# app/views/log/in.js.erb
redirect_to("/myprofile")

# public/javascript/application.js
function redirect_to(url) { location.href = url; }

В FF и Chrome и Safari каждый браузер отлично работает. Пользователь заходит в систему и перенаправляет на свой профиль, но в проводнике он запрашивает загрузку файлов! Вы знаете, эта маленькая желтая полоска просит пользователя загрузить файл. Я думаю, что ошибочные заказы Ajax с файлами, но... почему?

1 ответ

Решение

Похоже, проблема с типом MIME. Вот пост, описывающий проблему и решение: http://agilerails.wordpress.com/2009/05/27/ie-throws-file-download-security-warning-on-form-submit/.

По сути, проблема в заголовках запросов IE. Вы должны будете использовать MIME-тип text/html, чтобы он работал. Больше информации об этом в этом вопросе.

У вас есть несколько вариантов:

  • Определите IE по user-agent и отправьте текст / html, как описано здесь
  • добавлять format.html выше format.js в списке приоритетов ответа на запрос

Изменить: не совсем уверен, что это то, что вы хотите для всех запросов, так как вы также делаете AJAX, но на этом последнем шаге, когда вы делаете перенаправление, вы должны предоставлять MIME-тип text/html.

Другие вопросы по тегам