我正在使用Ruby on Rails 4开发一个网站,一些CSS文件的路径出现了问题。
以下这些资源没有被包含在我的application.sass文件中:
- mobile.scss - mozilla.scss - msie.scss - opera.scss - webkit.scss
我已经在我的application.rb文件中引入了它们,以便使用以下内容进行预编译:
在运行上述命令后,我注意到资产已经预编译并存储在我的
当我在浏览器中加载站点并查看源代码时,我注意到特定于浏览器的CSS文件没有使用正确的资产路径。它显示为:
我的问题是,
以下这些资源没有被包含在我的application.sass文件中:
- mobile.scss - mozilla.scss - msie.scss - opera.scss - webkit.scss
我已经在我的application.rb文件中引入了它们,以便使用以下内容进行预编译:
config.assets.precompile += [
'mobile.css',
'mozilla.css',
'msie.css',
'opera.css',
'webkit.css'
]
在我的生产服务器上,我运行了以下命令(注意:使用touch
命令是为了确保应用程序重新启动并清除缓存,因为我正在使用Phusion Passenger和Nginx作为服务器):
rake assets:precompile RAILS_ENV=production
touch tmp/restart.txt
在运行上述命令后,我注意到资产已经预编译并存储在我的
public/assets/
目录中。它们也正确地列在public/assets/
目录下的manifest.json
文件中。当我在浏览器中加载站点并查看源代码时,我注意到特定于浏览器的CSS文件没有使用正确的资产路径。它显示为:
<link href="/assets/application-ec1031f251a585c79d4404ef2899f6d1.css" media="screen" rel="stylesheet" />
<link href="/stylesheets/webkit.css" media="screen" rel="stylesheet" />
我希望看到的是:
<link href="/assets/application-ec1031f251a585c79d4404ef2899f6d1.css" media="screen" rel="stylesheet" />
<link href="/assets/webkit-70899fec75bb8eae24edae491a94f73a.css" media="screen" rel="stylesheet" />
我的视图使用以下代码:
<% if @mobile %>
<%= stylesheet_link_tag :mobile %>
<% else %>
<%= stylesheet_link_tag :application %>
<%= stylesheet_link_tag :msie if @browser == 'Internet Explorer' %>
<%= stylesheet_link_tag :opera if @browser == 'Opera' %>
<%= stylesheet_link_tag :mozilla if @browser == 'Mozilla' %>
<%= stylesheet_link_tag :webkit if @browser == 'Webkit' %>
<% end %>
我的问题是,
webkit.css
路径不应该输出正确吗?还是我漏了什么?非常感谢您的帮助。
/stylesheets/webkit.css
这样的路径时,意味着它无法找到该资产的预编译版本。 - Ross Allen