Ruby on rails rails4:image_标记生成404错误

Ruby on rails rails4:image_标记生成404错误,ruby-on-rails,asset-pipeline,Ruby On Rails,Asset Pipeline,在生产中,为image_标记助手生成的html返回404错误。 资产管道已启用 在haml文件中 =image_tag "how_it_works_1.jpg" 文件位于app/assets/images/how_it_works_1.jpg 当我使用mina在生产中部署时,我可以在current/public/assets/how_it_works_1-5e40b2326fc14e879ae476a3fd6aef97.jpg下找到此资产 但是,生成的html并不指向此资产,而是指向/imag

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

在haml文件中

=image_tag "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 以下是my 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'
config.service\u static\u assets=false
config.assets.js_compressor=:uglifier
config.assets.css_compressor=:sass
config.assets.compile=true

config.assets.paths您必须先运行此命令。我以前也有过这个问题

rake assets:precompile RAILS_ENV=production

然后重新加载服务器。

您的资产似乎已成功预编译。但是,Rails默认拒绝为生产中的静态资产提供服务。有更多的信息。(Ctrl-F用于
配置静态服务\u资产

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


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

在config/environments/production.rb中,
config.assets.digest
似乎不是真的(默认情况下应该是真的)

它设置为true-我编辑了我的问题,添加了production.rb的相关部分。我正在使用apache2.4+passenger。我编辑了这个问题好吧,我想你会希望在Apache的配置文件中有一行像
Alias/assets/path/to/currents/public/assets/
。虽然现在回想起来,我不能肯定这会有帮助,因为。也许您可以提供更多的线索,比如public/assets/directory的Unix文件权限?您尝试过我关于预编译资产的答案吗?我认为问题不在于服务器,而在于生成的链接。嗯,很有趣。很高兴这样做有效,但我有点困惑,因为资产已经预编译了——这可以从public/assets文件夹中存在的摘要文件名中看出。以前目录中可能没有
manifest.json
文件?奇怪…这就是解决办法。我对此表示怀疑,因为deploy.rb脚本已经有了预编译规则