TL; DR asset_data_uri
有效但asset_path
没有。
我最近从一个本土的+ jammit资产管道切换到了Rails资产管道,希望我可以放弃一堆代码,并为我提供最重要的一切。我生产中的一切都很好(与stackoverflow上的大多数人不同),但是,在开发模式下,图像不会显示。
我注意到了一些事情。
asset_data_uri()
请求的app / assets / images中的图像显示正常。但是,使用asset_path()
的相同图像不会。例如,在我的initialize.css.erb文件中,<%= asset_data_uri "cork.bg.gif" %>
显示正常,但<%= asset_path "cork.bg.gif" %>
没有。这是因为Rails将路径解析为/assets/cork.bg.gif,并且该位置没有图像(即public / assets / cork.bg.gif)rake assets:precompile RAILS_ENV=development
进行预编译可以将我的图像放在正确的位置,这样它们就可以从公共/资产中提供,但它也会抑制开发,因为现在对JS文件的更改都会被缓存,直到我再次预编译为止。那我该怎么办?这是相关配置。如果我能提供其他任何内容,请告诉我:
在application.rb中:
config.assets.enabled = true
config.assets.version = '1.0'
在development.rb中:
config.assets.compile = true
config.assets.compress = false
config.assets.debug = true
注意:我读了很多关于config.serve_static_assets
参与的内容。它目前在development.rb中被注释掉,所以它就是Rails 3.2.13上的默认版本。
示例:initialize.css.erb
我的图片位于app / assets / images中。我正在使用的示例图像位于app / assets / images / cork.bg.gif。
使用:
body {
background-image: url(<%= asset_data_uri "cork.bg.gif" %>);
}
不起作用:
body {
background-image: url(<%= asset_path "cork.bg.gif" %>);
}