我在Heroku上有一个临时服务器,向其推送的代码与我的生产服务器(也是在Heroku上)中的代码相同,并且在临时服务器中没有加载任何资产,但它们都可以在prod中工作。Rails 3.2.11。
资产:预编译工作,我可以使用bash登录并查看public/assets下预编译的所有资产。但当我尝试查看它们时,我总是得到404。
日志中包含了很多这样的内容:
ActionController::RoutingError (No route matches [GET] "/assets/team_accessories_ad.png"):我觉得我几乎什么都试过了。即使文件在那里,它也不会路由到public/assets来获取它们。我是不是做错了什么?
谢谢
编辑:在我的例子中,它是由12factor gem (https://github.com/heroku/rails_12factor)引起的。当我移除这个宝石的时候,一切都开始工作了!
谢谢
发布于 2013-11-15 18:18:03
您的问题是图像不会动态链接到资源文件中:
SCSS
Rails与SCSS捆绑在一起,因为这允许您正确地预编译图像资产。当您使用rake assets:precompile时,SCSS是动态呈现的,而CSS不能动态呈现资产。
因为在预编译时为Rails fingerprints the assets,这意味着许多图像资源(在预编译前的名称为XXXX.png )在预编译后将具有损坏的路径(使其成为XXX-dsdasdfew5823459432jt342j52435.png)
解决方案是在scss中使用动态镜像路径:
#app/assets/stylesheets/images.css.scss
body {
background: asset_url('image_path.png')
}这允许您在预编译时动态呈现图像路径,从而使您能够在生产环境中查看图像
发布于 2015-02-16 10:26:36
我也遇到了同样的问题,结果发现是由how Rails 4 handles static files上的变化引起的。我将rails_12factor gem添加到我的生产组中,它解决了这个问题。我想我只需要添加rails_serve_static_assets就可以了,但是我没有尝试。
https://stackoverflow.com/questions/19967916
复制相似问题