rails4中的heroku服务器上没有加载样式表、图像和javascript

Stylesheets, images and javascript are not loading on heroku server in rails4

本文关键字:样式 图像 javascript 加载 heroku 中的 服务器 rails4      更新时间:2023-09-26

你好,我在我的gemfile 中包含了以下内容

group :production, :staging do
  gem 'rails_12factor'
end

在我的样式表中,我包含了mytest.css.scss 的图像

.abc{background: image-url('/assets/mobile/phone.png');}

正在生产.rb

config.serve_static_assets = true
config.assets.compile = true

在herokrun-bash中,我有rake-assets:也可以预编译,但仍然不加载图像、样式表和javascript。请指导我如何解决这个问题

尝试其中一种:

background-image: image-url("logo.png")
background-image: asset-url("logo.png", image)
background-image: asset-url($asset, $asset-type)
background-image: asset-data-url("logo.png")

有时,Heroku需要时间来识别新资产-我们发现,如果在预编译后重新启动dyno,它通常会在刷新时加载它们:heroku restart

您应该将其与引用的动态助手一起使用(根据sadaf2605的答案:

#app/assets/stylesheets/application.js
.element {
   background: asset_url("your_image_url.png");
} 

您需要做的另一件事是为production-预编译

rake assets:precompile RAILS_ENV=production


调试

很难看出问题可能是什么;我们调试它的主要方法如下:

  1. 推送时,应用程序上的right-clickview source
  2. console中,您可能会看到一系列404resource not found)错误
  3. 这些错误将指示Rails正在查找哪些文件——查找指纹

如果应用程序正在寻找指纹文件,这是一个好迹象(这意味着你拥有的文件不正确)。要解决此问题,您只需在发送到Heroku:之前预编译

$ rake assets:precompile RAILS_ENV=production
$ git add .
$ git commit -a -m "Fix"
$ git push heroku master

这将向Heroku发送正确的文件。

如果你的应用程序没有寻找指纹文件,这意味着你必须在CSS中正确引用它们。我想你已经知道了(写在上面)。