我有点困惑,因为看起来application.css包含了两次,一次是从清单中列出资源然后是缓存。因此,当我删除单个文件时,它似乎仍然存在于application.css文件中。
/*
*= require twitter/bootstrap
*= require_self
*= require_tree ./common
*= require_tree ./helpers
*/
按预期工作并以开发模式输出所有相关的单个文件
# Do not compress assets
config.assets.compress = false
# Expands the lines which load the assets
config.assets.debug = true
<link href="/assets/twitter/bootstrap.css?body=1" media="screen" rel="stylesheet" type="text/css" />
<link href="/assets/application.css?body=1" media="screen" rel="stylesheet" type="text/css" />
<link href="/assets/common/announcement.css?body=1" media="screen" rel="stylesheet" type="text/css" />
<link href="/assets/common/button.css?body=1" media="screen" rel="stylesheet" type="text/css" />
<Blah blah>
这应该是空白的吗?因为我在application.css文件中的所有内容都是清单而没有实际的css,但我得到的所有连接代码都是106kb。
IE如果我删除公共目录中的文件,它就不会消失。它不再列在输出中,但css仍然出现在application.css
中答案 0 :(得分:41)
之前我遇到过这样的问题。这是因为我在公共文件夹以及apps目录中的applcation.css之后预编译了资产。我不确定如何解决它,以便在开发模式下不会发生这种情况,但是如果删除了/public/assets
目录,则应该修复它。
检查并查看您是否有公共/资源文件夹,如果您这样做并且已满,则可能是您看到双倍的原因。
答案 1 :(得分:37)
目前(2012-09-24)rails / sprockets中存在一个错误,导致它无法正确检测导入的文件。
这应该在rails 3.2.9及更高版本中修复,但与此同时,您可以按如下方式解决这个问题:
你现在应该看到正确的CSS。
答案 2 :(得分:10)
您可能需要查看
https://stackoverflow.com/a/7854902/686460
“将development.serve_static_assets = false添加到development.rb将阻止从/ public / assets加载文件”
这是为我做的。
答案 3 :(得分:7)
@ Agustin的解决方案是为我做的,但这里有一些你需要做的事情:
删除/ tmp / cache / assets
将config.serve_static_assets = false
添加到development.rb或test.rb(积分给@Agustin)
重新启动您的服务器。
确保您的application.js / .css未在浏览器中缓存。转到http://localhost:3000/assets/application.js?body=1
并点击ctrl + f5强制刷新(您还可以尝试在末尾附加追加随机函数参数:http://localhost:3000/assets/application.js?body=1&rnd=12343
如果你得到别的东西并且ctrl + f5仍然没有帮助,你需要清除浏览器的缓存。
跳过其中任何一个步骤都会导致缓存的application.js / .css与单个文件中的更新冲突。
答案 4 :(得分:4)
最适合我的方法是删除 tmp / cache / *目录的内容......
答案 5 :(得分:3)
对我们有用的是设置'config.assets.debug = false'
这不再将包含HTML的CSS设置为href =“/ assets / bootstrap-new.css?body = 1”,而是将其设置为href =“/ assets / bootstrap-new.css”,我认为是问题。
答案 6 :(得分:1)
我遇到了同样的问题。尽管清除了tmp / cache和public / assets,但是minified application.css仍然被缓存并从某个地方提供,我对单个css文件的更改没有得到满足。
这对我有用:
在application.css中删除行*= require_self
重启服务器
似乎删除了缓存,如果您在浏览器源中单击application.css,您将不再看到缩小版本
将*= require_self
替换回文件并继续开发。
答案 7 :(得分:0)
我需要最后一步,但我已经修好了。这是我做的:
然后,我在谷歌浏览器中更新了我的屏幕,但仍然无法正常工作。所以,我推出了Firefox和瞧,实际上它正在运行。这意味着Chrome正在缓存浏览器中的旧文件。所以,然后我清除了Chrome中的浏览器缓存,它运作良好!
答案 8 :(得分:0)
我知道这是一个老问题,但是对我有用的一个修复是我有nginx代理到我的开发环境并且它在配置中有一个location ~ ^/(assets)/
块。要么注释掉,要么尝试重新启动nginx以使缓存无效。如果您正在开发,您可能只想完全评论它。
在我记得这件事之前,我没有太多时间对其进行故障排除。
答案 9 :(得分:-5)
在生产环境中运行应用程序时,资产可以更好地完成工作,然后您只需加载包含所有文件的application.css,并进行压缩,以减少服务器请求和压缩后的application.css样式将被缓存。