代码之家  ›  专栏  ›  技术社区  ›  Tiago

(ruby-on-rails)当不应该这样做时,页面标题将变为文本/javascript

  •  3
  • Tiago  · 技术社区  · 15 年前

    我正在开发一个Rails应用程序,但是我在使用Internet Explorer访问它时发现了一个问题。 Firefox和Safari会显示页面。 尽管如此,当使用Internet Explorer时,在某些页面中,它尝试下载页面,而不是显示页面。 我不知道会发生什么。

    以下是我的application.html.erb的html标题:

    <!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在firefox上显示内容类型text/html;charset=utf-8,fiddler在Internet Explorer上显示内容类型text/javascript;charset=utf-8。

    2 回复  |  直到 15 年前
        1
  •  4
  •   Community CDub    8 年前

    我总是把format.html放在第一位。这样,当IE发送一个奇怪的接受头时,就像' / '它将呈现它命中的第一个。在你的情况下,我说它在找什么,所以你要把它发出去。先把format.html块放在第一位,你就会变成黄金。

    (见 my answer here 更多详细信息)

        2
  •  3
  •   SLaks    15 年前

    您的页面可能有错误的mime类型。

    查看中的响应 Fiddler 并检查mime类型。

    要在IE中正确工作,您可能应该使用 text/html .