Rails 5资产在开发中返回404

时间:2017-07-28 01:38:09

标签: ruby-on-rails asset-pipeline sprockets

我知道这个问题很多,但我在这里失去了理智。我开始使用Rails 5构建应用程序。我部署到AWS EB并将env设置为开发。但我的资产没有加载。获得404.我在application.rb文件中实现了sprockets和require 'rails/all'以及运行rake assets:precompile。我还尝试了development.rb中的所有config.asset配置:

config.assets_compile
config.public_file_server.enabled
config.assets.digest
config.assets.enabled

对于我的每个资产,我的nginx错误日志都包含以下内容。路径错了。我没有将资产放在/var/app/current/public中,我将它们放在/var/app/current/app/assets中。在某些时候,我从那里取了它(不记得怎么样),但它仍然无效:

2017/07/28 01:16:15 [error] 2994#0: *1387 open() "/var/app/current/public/assets/merck-logo.png" failed (2: No such file or directory), client: 76.218.103.88, server: _, request: "GET /assets/merck-logo.png HTTP/1.1", host: "merckcoupons-dev1.dv3ww3wmii.us-west-1.elasticbeanstalk.com", referrer: "http://merckcoupons-dev1.dv3ww3wmii.us-west-1.elasticbeanstalk.com/circular"

疯狂的是,我在不久前用另一个应用程序做了这个,并将其作为指南打开。我一直在谷歌搜索几个小时,我无法弄清楚。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

使用image_tag帮助程序引用图像时,只包含文件名而不包含路径。 Rails将在开发环境中使用app/assets/images中的文件,然后在其他环境中使用public/assets/IMAGE_NAME_FINGER_PRINT.ext(在预编译之后)

请参阅:http://guides.rubyonrails.org/asset_pipeline.html#coding-links-to-assets

例如:

好的:<%= image_tag 'rails.png' %>

坏:<%= image_tag '/assets/rails.png' %>