(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
,