Rails 4来自CSS的资产或图像路径

时间:2014-11-02 05:19:06

标签: css ruby-on-rails-4 sass asset-pipeline

我的文件结构是这样的

app
  assets
    bookshelf
      assets
        my_image.jpg
    images
      standard_image.png

在我的css.scss文件中,这两个都在开发中,但它们不能在生产中工作。

#some_div {
  background: url("standard_image.png")
}


#some_div {
  background: url("assets/my_image.jpg")
}

我已完成RAILS_ENV=production rake assets:clean assets:precompile。我删除了tmp/cache

我觉得这可能是配置问题。我错过了什么?

我知道图片在服务器上。我获取了已消化的文件名,并将其放入带有生产根地址的URL中。


当我尝试使用

      background: asset-url("assets/my_image.jpg", image)

我得到了

  

Sprockets :: Rails :: Helper :: AssetFilteredError at books

     

资产已过滤掉,将无法投放:添加   Rails.application.config.assets.precompile += %w( assets/bookshelf_skin02_top_bg.jpg )来   config/initializers/assets.rb并重启您的服务器

显然,我不想在配置中添加每个资产文件。

3 个答案:

答案 0 :(得分:5)

我创建了/config/initializers/asset.rb并将相关文件扩展名设置为正则表达式。

我相信这是有效的,因为这告诉资产管道在lib或供应商中预编译所有这些文件类型,这些文件类型不会在rails 4中自动完成。

# Images
Rails.application.config.assets.precompile << /\.(?:png|jpg|jpeg|gif)\z/

# Fonts
Rails.application.config.assets.precompile << /\.(?:svg|eot|woff|ttf)\z/

答案 1 :(得分:0)

删除资产文件夹:

background: image-url('my_image.jpg');

答案 2 :(得分:-1)

在config / environments / production.rb中设置为true

config.assets.compile = true