我已经在Digital Ocean上部署了Rails 4应用程序。一切顺利,但是应用返回了404图片:
I, [2014-07-20T22:28:00.693171 #7751] INFO -- : Started GET "/assets/left.png" for 128.73.51.11 at 2014-07-20 22:28:00 +0000
F, [2014-07-20T22:28:00.695271 #7751] FATAL -- :
ActionController::RoutingError (No route matches [GET] "/assets/left.png"):
vendor/bundle/ruby/2.0.0/gems/actionpack-4.1.0/lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
经过一番谷歌搜索,我发现了这一点,据说我可以使用config.serve_static_assets = true
或rake assets:precompile
。我都尝试过,但仍然有404的字体和图像(CSS和JS)都可以。
有人能帮忙吗?
这可能无法直接解决您的问题-而是澄清可能出了什么问题:)
指纹识别
在不正确了解您的应用设置的情况下,这只是要考虑的问题,但是导致此特定问题的主要原因是 asset fingerprinting
指纹基本上是Rails接收资产文件,将它们编译成单个文件(通常是application.css
/ application.js
)并允许您根据需要引用这些文件的地方。
这里的问题是,如果您要提供已被指纹识别的静态资产,您将无法再将它们称为CSS / JS中的“静态”资产。您必须使用动态引用:
路径
动态引用基本上是您在其中使用类似内容的地方asset_path
-它使您可以根据需要引用路径,而不管其文件名如何
通常,您将像这样设置CSS:
#app/stylesheets/application.css
body {
background: url("your/image.png");
}
这里的问题是,这将直接引用图像,并且将无法使用所需的动态指纹路径。要解决此问题,您需要使用一种Rails CSS预处理器(SASS和SCSS):
#app/assets/stylesheets/application.css.scss
body {
background: asset_url("your/image.png"); /* Notice the path helper? */
}
动态引用的文件名/路径的问题将是您的应用程序可能面临的问题之一。在不了解您如何引用图像的情况下,我只能推测-但我建议您看一下您使用的是哪种路径/资产助手
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句