2010-08-30 9 views
1

Mon code:RJS ne fonctionne pas avec 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 et Chrome et Safari et tous les navigateurs fonctionne très bien. L'utilisateur se connecte au système et redirige vers son profil, mais dans l'explorateur il demande le téléchargement de fichiers! Vous savez, cette petite barre jaune demande à l'utilisateur de télécharger un fichier. Je pense est confondre les ordres ajax avec les fichiers mais ... pourquoi?

Répondre

3

Sonne comme un problème avec le type MIME. Voici un article décrivant le problème et une solution: http://agilerails.wordpress.com/2009/05/27/ie-throws-file-download-security-warning-on-form-submit/.

Fondamentalement, le problème est avec les en-têtes de demande de IE. Vous devrez utiliser un type MIME de texte/html pour le faire fonctionner. Plus d'informations à ce sujet dans this SO question.

Vous avez quelques options:

  • détecter IE par l'utilisateur-agent et envoyer des messages texte/html comme décrit here
  • Ajouter format.html ci-dessus format.js dans la liste des priorités de réponse à la demande

Modifier : pas très sûr que c'est ce que vous voulez pour toutes les demandes, puisque vous faites aussi AJAX, mais à cette dernière étape, lorsque vous faites la redirection, vous devriez servir un type MIME text/html.