Rails:生产中缺少资产(没有路由匹配 [GET] "/assets/application-12345.css")

Rails: assets are missing in production(No route matches [GET] "/assets/application-12345.css")

我有 Rails 4 个应用程序。当我 运行 它处于开发模式时,一切正常,但是当我 运行 它处于生产模式时,资产丢失并出现主题错误。

示例我如何使用资产:

<%= javascript_include_tag :application %>
<%= stylesheet_link_tag :application, media: 'all' %>

有什么问题吗?感谢您的时间和帮助。

错误消息如下:

GET http://127.0.0.1:3000/assets/application-562bac274264d04046337005941c14dc9909665bcdecf8739957ad529b009127.js 404 (Not Found)

我的 application.js 和 .css 文件(编译版本)在

myproject\public\assets

并且 application.js 和 .css 文件(源文件)在

myproject\app\assets\javascrips and myproject\app\assets\stylesheets

我是 运行 应用 Windows,如果它很重要的话。

问题是在生产中,资产是 precompiled & fingerprinted,因此直接调用它们是行不通的。您必须调用 文件名 :

<%= stylesheet_link_tag :application, media: 'all' %>
<%= javascript_include_tag :application %>

您还需要确保将 stylesheets / javascripts 保存在适当的目录中。我不明白你为什么要把 application.css 放在 /javascripts 中。


上述工作的原因是因为它们在操作系统中使用 asset_path helper, which allows Rails to pull the appropriate file from a set of relative paths. Rather like the PATH var,这意味着您可以调用可能已在生产中指纹识别的资产。