样式表,图片和JavaScript未在rails4中的heroku服务器上加载

时间:2015-10-30 05:35:04

标签: javascript css ruby-on-rails ruby-on-rails-4 heroku

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

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

和inmy stylesheets我已将图片包含为mytest.css.scss

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

in production.rb

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

并且在herokurun bash中我有rake资产:预编译,但仍然没有加载图像,样式表和javascripts。请指导我如何解决这个问题

2 个答案:

答案 0 :(得分:1)

尝试以下方法之一:

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")

答案 1 :(得分:0)

有时,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正在寻找的文件 - 查找fingerprints
  4. 如果应用正在寻找指纹文件,那么这是一个好兆头(这意味着您拥有的文件不正确)。要解决此问题,您应该在发送到Heroku之前预先编译

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

    这会将正确的文件发送给Heroku。

    如果您的应用没有查找指纹文件,则表示您必须在CSS中正确引用它们。我想你已经知道了(如上所述)。