【Rails Asset Pipeline】生产环境下image_url没生成digested url

问题

# 开发环境
<%= image_tag "icons/rails" %>
# => 

在开发环境下很正常,但是部署到服务器上,就出现问题了。

# 生产环境
<%= image_tag "icons/rails" %> 
# => 

过程

  1. 一开始看到网站没有显示图片,但是css和js文件是有digested url的,所以asset pipeline设置是没问题的。
  2. 然后再去检查资源编译是否成功,在/path/to/rails_app/public/assets/目录下也有处理过的图片资源。那么问题就定位在image_tagimage_url方法上。
  3. image_urlActionView::Helpers::AssetUrlHelper模块中定义,ActionView::Baseinclude了该模块,因此我们可以实例化一个ActionView::Base对象,在控制台上测试这个方便些。在服务器上的Rails控制台测试才知道,要加上后缀名才能生成正确的digested url
> ActionView::Base.new.image_url('common_header')
=> "/images/common_header"
> ActionView::Base.new.image_url('common_header.jpg')
 => "/assets/common_header-4187405b...32b.jpg"

解决办法

因此,解决办法就是修改所有调用image_url()方法的参数,都带上相应图片文件的后缀名。

你可能感兴趣的:(【Rails Asset Pipeline】生产环境下image_url没生成digested url)