2011-08-31 37 views
9

在我的看法,我把:Rails的3.1.X - IMAGE_TAG不使用预编译的文件在生产模式

<%= image_tag("coin.png") %> 

我原来的图像放在:

app/assets/images/coin.png 

但在生产模式通过IMAGE_TAG生成的HTML代码是:

<img alt="Coin" src="/assets/coin.png"> 

而不是击中预编译的资产:

coin-aba0e66819d64251cb3bb4bb29b26eb2.png 

(当然我不能看到图像)。

我没有忘记预先编译我的资产。

和我的环境/ production.rb是:

config.cache_classes = true                                             
    config.consider_all_requests_local  = false 
    config.action_controller.perform_caching = true                                        
    config.serve_static_assets = false                                                    
    config.assets.compress = true                                                 
    config.assets.js_compressor = :uglifier 
    config.action_dispatch.x_sendfile_header = "X-Accel-Redirect" 

谢谢你很多

回答

11

我发现它!!!!!!!

添加到您的production.rb:

config.assets.digest = true 
+3

你摇滚。我有一个rc.5安装,在没有新选项的情况下工作。 – nasmorn

+0

谢谢你。另外,为了解决sass文件中的相同问题,我必须用“image-url('foo.png')”替换“<%= asset_path('foo.png')%>”。 – Thilo

+0

非常感谢。随着时间的推移,此应用程序已从2.x升级到4.x。原来,它加载了旧的非哈希资产'header.jpg',并且完全忽略了'header-asdlfk12l3k4.jpg'。这个选项是缺少的。 – kimos

0

正如this railscasts的Rails 3.1的最新部分表示将不使用?hash缓存到期了。它将在文件名中为资产使用散列。不知道图像是否相同(还没玩过3.1),但这可能是你的问题。

+0

是完全是我错了,但同样的问题。无论如何感谢 – Unitech

相关问题