我目前在app / assets目录中的jquery.rest.js和jquery-ui-1.8.11.custom.min.js文件中有我的资产,但我的生产日志中仍然出现以下错误。
Started GET "/assets/jquery.rest-f1490ffc30dcefe21715ae360de2bead.js" for 24.141.74.123 at 2011-12-20 18:40:50 -0500
Served asset /jquery.rest-f1490ffc30dcefe21715ae360de2bead.js - 404 Not Found (3ms)
ActionController::RoutingError (No route matches [GET] "/assets/jquery.rest-f1490ffc30dcefe21715ae360de2bead.js"):
Started GET "/assets/jquery-ui-1.8.11.custom.min-707e06de7fe351e6e77e419988c20fd6.js" for 24.141.74.123 at 2011-12-20 18:40:50 -0500
Served asset /jquery-ui-1.8.11.custom.min-707e06de7fe351e6e77e419988c20fd6.js - 404 Not Found (3ms)
ActionController::RoutingError (No route matches [GET] "/assets/jquery-ui-1.8.11.custom.min-707e06de7fe351e6e77e419988c20fd6.js"):
我的应用程序在开发中工作,我不知道为什么长字符串附加在javascript文件名称的末尾,即生成中-707e06de7fe351e6e77e419988c20fd6
的{{1}}
答案 0 :(得分:1)
该字符串称为指纹。 Rails在生产模式中添加这些以允许在客户端缓存资产以提高性能。这包含在Rails asset pipeline guide
中采用此策略的副产品之一是您必须预编译文件以进行生产。这是通过内置于Rails的特殊任务完成的,通常由Capistrano在部署期间运行(您需要设置它 - 详细信息在指南中)。
此外,当你有一个不在清单中的js和css文件(默认的application.css和application.js)时,除非你把它们添加到一个配置变量中,否则它们不会被预编译。
您是否可以编辑问题以包含链接到文件的方式,如果您正在使用清单以及是否正在进行预编译,还可以告诉我们吗?
答案 1 :(得分:0)
我有同样的问题。
所选答案下的评论不适合我,但以下内容适用于我:
- vim config/application.rb
# Comment this to avoid `ActionController::RoutingError (No route matches [GET] "/assets/jquery-ui-1.8.16.custom.min-1116bf6f7eb1469bb3c60f6af13199ac.js");`
# config.assets.debug = true
感谢。