通过Rails 4中的image_tag在生产中未提供的图像

yer*_*syl 7 ruby-on-rails ruby-on-rails-4 digital-ocean

我将我的应用程序部署到生产环境中,发现图像不是从image_tag提供的,而是在我使用asset_path时提供的.我在app/assets/images下有我的图像.在生产中,我预先编译它们,使它们处于公共/资产中,并具有诸如"image_name-fk3r23039423-0e9232.png"之类的名称.

当我查看生成的html代码时,我看到我的image_tag的src是

/images/logo
Run Code Online (Sandbox Code Playgroud)

而asset_path生成这个:

/assets/login-bg1-01eead5b47afcb7e0a951a3668ec3921e8df3f4507f70599f1b84d5efc971855.jpg
Run Code Online (Sandbox Code Playgroud)

所以这是正确的.所以我很感兴趣为什么我不能使用image_tag'image-name'来提供图片?

这是我的production.rb

config.serve_static_files = true

config.assets.compile = false

config.assets.digest = true
Run Code Online (Sandbox Code Playgroud)

yer*_*syl 11

我通过添加扩展名来解决这个问题.即我这样做了:

<%= image_tag 'logo.png'%> # added .png 
Run Code Online (Sandbox Code Playgroud)

我不知道为什么没有扩展就没有开发工作.所以我想这个徽标图像现在是从应用程序资产提供的,而不是从公共资源提供的.

  • 发生这种情况是因为在开发过程中,当 Rails 在清单文件中找不到资产时,它会依靠另一种足够智能的机制(环境解析器)来找出扩展名。在生产中,此后备功能未激活。 (2认同)