Rails 4未在生产模式中显示imgaes

时间:2015-07-29 17:32:11

标签: ruby-on-rails ruby-on-rails-4 sass

我通读了Stack Overflow和Google上的每个链接。我花了很多时间尝试一些东西。但无法解决这个问题。

我的应用资产中有以下文件夹结构

app
  ->images
   ->application (folder)
    image1..
    image2..
   ->icons (folder)
     image3..
     image4..

我的stylesheets文件夹中有application.css文件,如下所示:

 app
  ->stylesheets (folder)
     application.css
    ->application (folder)
       app.css

application.css有以下条目:

*= require_tree ./application

因此它正在加载我的app.css文件,其中包含我的应用程序的所有css。在我的app.css中我正在使用:

{background: url('icons/user-business-gray.png') no-repeat 2px center transparent;}

我的config / environments / production.rb有:

  config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
  #config.serve_static_assets = false
  config.assets.compile = false
  config.assets.digest = true

我的config / initializers / assets.rb有:

Rails.application.config.assets.paths << Rails.root.join( "app/assets/images/application")

我做了:

RAILS_ENV=production rake assets:precompile

我可以在公共/资产,公共/资产/应用程序和公共/资产/图标中正确看到我的所有图像。

在开发模式下一切正常。但我看不到生产模式下app.css文件中引用的任何图像。

如果我使用<%= image_tag('icons/user-business-gray.png') %>直接将图像添加到.erb,我可以正确地看到图像。但我看不到上面引用的app.css引用的任何图像。

我甚至将app.css的名称更改为app.css.scss并引用了如下图像:

{background: url(assets-path('icons/user-business-gray.png')) no-repeat 2px center transparent;}

但仍然是同一个问题。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

尝试将文件名更改为app.css.scss并使用assert-url帮助程序:

{background: asset-url('icons/user-business-gray.png') no-repeat 2px center transparent;}

答案 1 :(得分:0)

这解决了这个问题:

{background: image-url('icons/user-business-gray.png') no-repeat 2px center transparent;}