rails4:image_tag生成404错误

时间:2014-04-26 22:10:12

标签: ruby-on-rails asset-pipeline

在生产中,为image_tag助手生成的html会返回404错误。 资产管道已启用

在haml文件中

=image_tag "how_it_works_1.jpg"

how_it_works_1.jpg文件位于app / assets / images / how_it_works_1.jpg

当我使用mina部署生产时,我可以在current / public / assets下找到此资产/ how_it_works_1-5e40b2326fc14e879ae476a3fd6aef97.jpg

然而,生成的html不指向此资产,而是指向/images/how_it_works_1.jpg返回404

<img src="/images/how_it_works_1.jpg"/>

它正在开发环境

下工作
<img src="/assets/how_it_works_1.jpg"/>

编辑: 我和乘客一起使用apache2.4 这是我的production.rb的摘录:

config.serve_static_assets = false
config.assets.js_compressor = :uglifier
config.assets.css_compressor = :sass
config.assets.compile = true
config.assets.paths << Rails.root.join('app', 'assets', 'fonts')
config.assets.digest = true
config.assets.version = '1.0'

3 个答案:

答案 0 :(得分:1)

你必须先运行它。我以前自己也遇到过这个问题。

rake assets:precompile RAILS_ENV=production

然后重新加载服务器。

答案 1 :(得分:0)

您的资产似乎已成功预编译。但是,Rails默认拒绝在生产中提供静态资产。 This Rails guide有更多信息。 (config.serve_static_assets的Ctrl-F)

要回答您的问题,您需要配置您的Web服务器(是Apache,nginx还是其他?),以便从部署的public/assets/目录中提供静态资产。

如果您编辑问题以包含您的网络服务器,我可以为您提供指向更具体说明的链接。干杯!

答案 2 :(得分:0)

在config / environments / production.rb中似乎config.assets.digest不正确(默认情况下应该为true)。