Rails 4 个 Heroku 资产未加载,但在 heroku 资产管道中
Rails 4 Heroku Assets not loading, though in heroku asset pipeline
我对 heroku 上的某些资产有疑问。 (本地环境运行良好)
资产正在筹备中。如果我在 heroku rails 控制台中执行:
helper.asset_path("typicons.woff")
helper.asset_path("backgrounds/1.jpg")
我收到以下回复:
/assets/typicons-c2430aad2b6a33948dc064cfaee8ad65ff9e3ca439834f3aaa84abec3d10dea8.woff
/assets/backgrounds/1-c2098ff7e7fbb89b2d18e9cd9089f712f2b837265d1d2e4182c36c23392760c6.jpg
所以我假设资产在 heroku 资产管道中。同样通过直接打开其中包含摘要的 url,我收到了该文件。
但是,如果我尝试像这样引用 css 或 javascript 中的文件:
$('.top-content').backstretch("/assets/backgrounds/1.jpg");
文件未加载。同样直接打开/assets/backgrounds/1.jpg也不行。从 .rb 或 .erb 文件引用资产有效。
谁能告诉我,我必须更改哪种配置,以便资产的 URL 在没有摘要的情况下也能正常工作?
谢谢!
问题是 Rails 4 根本不支持非消化资产。(无论出于何种原因)
以下是对该问题的更详尽的解释:Non Digested Asset Names in Rails 4
我个人的解决方法是向我的应用添加一个 public 资产文件夹:
public/assets/static/
并在那里上传所需的资产。由于它只是关于字体和背景图像,它们不经常更改,所以这似乎不是问题。在上面的 link 中,还提出了其他几种解决方案。
假设您使用的是相当标准的资产管道设置,Rails 指南中的这段话应该有所帮助:
If you add an erb extension to a JavaScript asset, making it something such as application.js.erb, you can then use the asset_path helper in your JavaScript code:
-- http://guides.rubyonrails.org/asset_pipeline.html(第 2.3.3 节)
在您的示例中,将 erb
扩展名添加到您的 JS 文件,然后将该行更改为
$('.top-content').backstretch(<%= asset_path("backgrounds/1.jpg") %>);
我对 heroku 上的某些资产有疑问。 (本地环境运行良好) 资产正在筹备中。如果我在 heroku rails 控制台中执行:
helper.asset_path("typicons.woff")
helper.asset_path("backgrounds/1.jpg")
我收到以下回复:
/assets/typicons-c2430aad2b6a33948dc064cfaee8ad65ff9e3ca439834f3aaa84abec3d10dea8.woff
/assets/backgrounds/1-c2098ff7e7fbb89b2d18e9cd9089f712f2b837265d1d2e4182c36c23392760c6.jpg
所以我假设资产在 heroku 资产管道中。同样通过直接打开其中包含摘要的 url,我收到了该文件。
但是,如果我尝试像这样引用 css 或 javascript 中的文件:
$('.top-content').backstretch("/assets/backgrounds/1.jpg");
文件未加载。同样直接打开/assets/backgrounds/1.jpg也不行。从 .rb 或 .erb 文件引用资产有效。
谁能告诉我,我必须更改哪种配置,以便资产的 URL 在没有摘要的情况下也能正常工作?
谢谢!
问题是 Rails 4 根本不支持非消化资产。(无论出于何种原因) 以下是对该问题的更详尽的解释:Non Digested Asset Names in Rails 4 我个人的解决方法是向我的应用添加一个 public 资产文件夹:
public/assets/static/
并在那里上传所需的资产。由于它只是关于字体和背景图像,它们不经常更改,所以这似乎不是问题。在上面的 link 中,还提出了其他几种解决方案。
假设您使用的是相当标准的资产管道设置,Rails 指南中的这段话应该有所帮助:
If you add an erb extension to a JavaScript asset, making it something such as application.js.erb, you can then use the asset_path helper in your JavaScript code:
-- http://guides.rubyonrails.org/asset_pipeline.html(第 2.3.3 节)
在您的示例中,将 erb
扩展名添加到您的 JS 文件,然后将该行更改为
$('.top-content').backstretch(<%= asset_path("backgrounds/1.jpg") %>);