(Ruby on Rails) Заголовок страницы идет как текст /javascript, когда он не должен

Я занимаюсь разработкой приложения на Rails, но обнаружил проблему при доступе к нему через Internet Explorer. Firefox и Safari отображают страницы в порядке. При этом при использовании Internet Explorer на некоторых страницах он пытается загрузить страницу, а не отображать ее. Я понятия не имею, что может происходить.

Вот заголовок html моего 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>

Но я не думаю, что это связано с application.html.erb, так как некоторые страницы отображаются нормально, а другие загружаются в ie.

Есть какие-либо понятия о том, что может быть причиной этого? или как это решить?

заранее спасибо

ОБНОВИТЬ

Теперь я знаю, что это относится к заголовкам, их отправка в виде mime-содержимого типа text/javascript вместо text/html. Но я не знаю почему. Вот код контроллера, если кто-то может указать мою ошибку, пожалуйста.

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 показывает Content-Type text/html; charset=utf-8 в firefox, а Fiddler показывает текст / javascript Content-Type; charset = utf-8 в Internet Explorer.

2 ответа

Решение

Я всегда ставлю format.html первым. Таким образом, когда IE отправляет странный заголовок "принимает", например "/", он будет отображать первый, который попадет. В вашем случае IE сказал, что ищет что-нибудь, поэтому вы отправляете это js. Поместите ваш блок format.html первым, и вы будете золотой.

(Смотрите мой ответ здесь для более подробной информации)

Ваши страницы, вероятно, имеют неправильный тип MIME.

Посмотрите на ответ в Fiddler и проверьте тип MIME.

Для корректной работы в IE вы, вероятно, должны использовать MIME-тип text/html,

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