由于某些奇怪的原因,我无法让我的Rails应用程序在生产模式下运行时在服务器上呈现CSS文件。我正在运行Passenger + Nginx设置。
当我点击公开网址时,我可以看到该应用。问题是,没有应用任何样式。当我使用Chrome开发工具查看正在呈现的CSS时,我看到该文件存在于服务器上,其中包含所有CSS。
但是,如果我看一个特定的组件,我会看到一些奇怪的东西:
a:-webkit-any-link {
color: -webkit-link;
text-decoration: underline;
cursor: auto;
}
一切都说“webkit ... style”。或“用户代理”。我以前从未见过这个?
同样,CSS预编译文件肯定在服务器上 - 我可以访问它们。 (资产/应用45fdaf ..... CSS)。
以下是正在呈现的模板的头部:
<head>
<title>Walter - <%= content_for?(:title) ? yield(:title) : "CRM App" %></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<%= csrf_meta_tag %>
<!-- Stylesheets -->
<%= stylesheet_link_tag 'application' %>
<!-- Font Awesome -->
<link href="//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.min.css" rel="stylesheet">
<!-- Apple icons -->
<%= favicon_link_tag('apple-icon-57.png', rel: 'apple-touch-icon', type: 'image/png', size: "57x57") %>
<%= favicon_link_tag('apple-icon-72.png', rel: 'apple-touch-icon', type: 'image/png', size: "72x72") %>
<%= favicon_link_tag('apple-icon-114.png', rel: 'apple-touch-icon', type: 'image/png', size: "114x114") %>
<%= favicon_link_tag('apple-icon-144.png', rel: 'apple-touch-icon', type: 'image/png', size: "144x144") %>
<!-- Favicon -->
<%= favicon_link_tag '/favicon.ico' %>
</head>
(我已尝试在production.rb中将静态资源设置为true和false,但这似乎并不重要。)
这就像应用程序没有在CSS的public / assets文件夹中查找。更奇怪的是图像渲染得很好。它确实看起来应用程序看起来正确的位置:
<link href="/assets/application-f0659345b965e7ce36fb30edf04896c6.css" media="screen" rel="stylesheet">
知道这里发生了什么吗?
感谢。
更新
在生产模式下使用<%= stylesheet_link_tag 'application' %>
时,会导致返回样式表为text / plain而不是text / css。
为什么会这样?
固定
显然你肯定需要包含mime.types文件是nginx.conf。我可能已经在某个时候评论过它,或者文档需要变得更好。无论哪种方式,这都修复了它。如果不包含该行,则无法翻译CSS文件。
答案 0 :(得分:1)
生产服务器是否返回带有内容类型text / css或application / octet-stream的css文件?后者显然是一个常见的错误,但不会呈现铬。