今天遇到这样的情况
在某个 htm.erb 中引入了一段 CSS 样式,
<link href="/stylesheets/dzporject/dz.css" rel="stylesheet" type="text/css" />
发布到测试环境 (nginx+unicorn) 发现,CSS 效果并没有渲染出来. 然后修改成
<%= stylesheet_link_tag "/stylesheets/dzporject/dz.css" %>
发现效果出来了。感觉两种写法对 nginx 来说应该是一样才对啊。为什么会有如此大的差异?
请在浏览器打开: http://youhost.com/stylesheets/dzporject/dz.css 看看,文件不存在吧!
production 下面 Assets Pipeline 编译出来以后是直接放到 /assets/
目录下面的,没有 stylesheets
了。在 production
环境下面,正确的位置应该是:
http://youhost.com/assets/dzporject/dz.css
另外话说你就没对比过直接写 link
tag 和 stylesheet_link_tag
两者之间的差别?
#11 楼 @ane 好吧,我还是建议你再看看 Assets Pipeline 的文档,正确使用它。你现在这些问题都是你自己搞出来的坑。
http://guides.ruby-china.org/asset_pipeline.html
Rails 经过多年的发展,沉淀出来现在这些功能,可以说每个功能都是有价值,有意义的。既然都在用 Rails 了,为何它提供的功能你不用,要自己写 link tag
这种页面单独 CSS 是一个甜蜜的坑,一开始一般都是为了快速解决某个问题,尝到甜头后就继续,然后就越写越多,应用页面越来越多,不能复用的 selectors 也越来越多,最后就。。。好一点的结果是花相当多不必要的时间在 CSS 上,坏一点的结果是需求变更,想换一些风格,然后就。。嘭