Ruby on rails 图像不';在开发模式下使用Rails资产管道无法正确解析
TL;DRRuby on rails 图像不';在开发模式下使用Rails资产管道无法正确解析,ruby-on-rails,ruby-on-rails-3.2,asset-pipeline,Ruby On Rails,Ruby On Rails 3.2,Asset Pipeline,TL;DRasset\u data\u uri起作用,但asset\u path不起作用 我最近从一个自制的+jammit资产管道切换到Rails资产管道,希望我能抛开一堆代码,把大部分事情都安排好。我在生产中一切都很好(不像stackoverflow上的大多数人),但是在开发模式下图像不会显示 我注意到了一些事情。 为了让图像正确显示,我必须在开发模式下进行预编译,以便通过css正确引用它们。不幸的是,在开发模式下预编译也会预编译javascript 在开发模式下未预编译时,使用asset\
asset\u data\u uri
起作用,但asset\u path
不起作用
我最近从一个自制的+jammit资产管道切换到Rails资产管道,希望我能抛开一堆代码,把大部分事情都安排好。我在生产中一切都很好(不像stackoverflow上的大多数人),但是在开发模式下图像不会显示
我注意到了一些事情。
- 为了让图像正确显示,我必须在开发模式下进行预编译,以便通过css正确引用它们。不幸的是,在开发模式下预编译也会预编译javascript
- 在开发模式下未预编译时,使用
请求的app/assets/images中的图像显示良好。但是,使用asset\u data\u uri()
的相同图像不可用。例如,在我的initialize.css.erb文件中,asset\u path()
显示良好,但
不显示。这是因为Rails将路径解析为/assets/cork.bg.gif,并且该位置没有图像(即public/assets/cork.bg.gif) - 使用rake资产进行预编译:precompile RAILS_ENV=development使我的图像处于正确的位置,这样它们就可以从public/assets获得服务,但这也会阻碍开发,因为现在对JS文件的更改会被缓存,直到我再次预编译
config.assets.enabled = true
config.assets.version = '1.0'
config.assets.compile = true
config.assets.compress = false
config.assets.debug = true
正在开发中。rb:
config.assets.enabled = true
config.assets.version = '1.0'
config.assets.compile = true
config.assets.compress = false
config.assets.debug = true
注意:我已经读了很多关于涉及config.service\u static\u资产的文章。它目前在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" %>);
}
正文{
背景图片:url();
}
不起作用:
body {
background-image: url(<%= asset_path "cork.bg.gif" %>);
}
正文{
背景图片:url();
}
您的图像在哪里?您的评论并不完全正确:“这是因为Rails解析到/assets/cork.bg.gif的路径,而该位置没有图像(即public/assets/cork.bg.gif)”。当管道在开发中启用时,它会在“/assets”上挂载一条由Rails提供服务的路由。这意味着它不在公共目录中查找。您能否验证app/assets/images
是否在您的资产搜索路径中?在Rails控制台中键入Rails.application.config.assets.paths
,查看Rails正在搜索的位置。