2009-12-13 4 views
3

Je développe une application Rails, mais j'ai trouvé un problème en y accédant avec Internet Explorer. Firefox et Safari affichent les pages correctement. Althrough, lors de l'utilisation d'Internet Explorer, dans certaines pages, il essaie de télécharger la page, au lieu de l'afficher. Je n'ai aucune idée de ce qui pourrait arriver.(Ruby on Rails) En-tête de page en texte/javascript, quand il n'est pas censé

Voici l'en-tête html de mon application.html.erb:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="otzee_header_scripts"> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>test site</title> 
<meta name="robots" content="index, follow" /> 
<meta name="description" content="" /> 
<meta name="keywords" content="" /> 
<meta name="author" content="NZN - No Zebra Network" /> 
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" /> 
    <%= stylesheet_link_tag "default.css" %> 
    <%= stylesheet_link_tag "#{site_theme}/default", :id => 'theme_change_css' %> 
    <%= stylesheet_link_tag "#{site_theme}/toyart.css", :id => 'theme_change_bg_css' %> 

<!-- Includes Globais --> 
    <%= javascript_include_tag 'jquery' %> 
    <%= javascript_include_tag 'jquery-ui' %> 
    <%= javascript_include_tag 'jrails' %> 
    <%= javascript_include_tag 'games' %> 
    <%= javascript_include_tag 'users' %> 
    <%= javascript_include_tag 'application' %> 
    <%= stylesheet_link_tag 'application' %> 
    <%= stylesheet_link_tag 'acts_as_taggable_stylesheet' %> 

    <%= yield(:head) %> 
<!-- Globais --> 

<!--[if lte IE 6]> 
<link href="stylesheets/ie6.css" rel="stylesheet" type="text/css" /> 
<![endif]--> 
<script src="http://www.google.com/jsapi"></script> 

</head> 

Mais je ne pense pas que son lié au application.html.erb, car certaines pages affichent normale et d'autres sont téléchargés par le-à-dire .

Avez-vous la moindre idée de ce qui pourrait être à l'origine? ou comment le résoudre?

Nous vous remercions à l'avance

MISE À JOUR

Je sais maintenant qui est lié à l'en-tête, son envoi comme mime texte type de contenu/javascript au lieu de text/html. Mais je ne sais pas pourquoi. Voici le code du contrôleur, au cas où quelqu'un pourrait signaler mon erreur, s'il vous plaît.

def index 
    respond_to do |format| 
     format.js do 
     if params[:bookmarks] != 0 
      @games_infos = current_user.games_info_bookmarks params[:page], 8 
      @bookmarks = 1 
     else 
      @games_infos = current_user.games_info_collection params[:page], false, 8 
      @bookmarks = 0 
     end  
     end  
     format.html do 
     @invites = current_user.friends_pending 
     @whats_new = WhatsNew.find_user_network_updates @me, 1, 13 
     @games_infos = @me.games_info_bookmarks params[:page], 8 
     @bookmarks = @games_infos.size 
     @games_infos = @me.games_info_collection(params[:page], false, 8) unless @bookmarks > 0 
     @friends  = @me.friends_on_off 
     @high_scores = @me.high_scores 
     end 
    end 
    end 

Obs: firebug affiche le type de contenu text/html; charset = utf-8 sur firefox, et Fiddler affiche Content-Type text/javascript; jeu de caractères = utf-8 sur Internet Explorer.

+0

Est-il accessible en ligne partout? Il semble que ce soit un problème de type MIME, mais je n'ai pas assez d'informations à dire. – recursive

+0

ce n'est pas encore en ligne, mais je pense que son type MIME lié, mais je ne sais pas pourquoi il se passe – Tiago

Répondre

4

Je place toujours le format.html en premier. De cette façon, lorsque IE envoie un en-tête d'acceptation bizarre, comme '/', il affichera le premier en-tête. Dans votre cas, IE a dit qu'il cherchait quelque chose, alors vous l'envoyez js. Mettez votre bloc format.html en premier et vous serez en or.

(Voir my answer here pour quelques détails)

+0

qui a fait l'affaire, merci – Tiago

3

Vos pages ont probablement le mauvais type MIME.

Examinez la réponse dans Fiddler et vérifiez le type MIME.

Pour fonctionner correctement dans Internet Explorer, vous devez probablement utiliser un type MIME de text/html.

+0

Oui, vous avez raison, son envoi le mime comme texte/javascript, mais je ne sais pas pourquoi. la page a son respond_to pour format.js et format.html – Tiago

+0

Quel serveur web utilisez-vous? Il peut avoir un paramètre qui surcharge votre script. –

+0

Il fonctionne sur mongrel. Mais Firefox semble obtenir l'en-tête correct, alors que ce texte/javascript. J'ai essayé de forcer l'en-tête du contrôleur à être text/html, mais toujours le même. – Tiago