我的文件结构是这样的
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
并重启您的服务器
显然,我不想在配置中添加每个资产文件。
答案 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