gpt4 book ai didi

ruby-on-rails - Heroku 不加载预编译的 Assets

转载 作者:行者123 更新时间:2023-12-04 06:36:06 24 4
gpt4 key购买 nike

我在 Heroku 上有一个暂存服务器,其中推送了与我的生产服务器(也在 Heroku 上)相同的代码,并且没有任何 Assets 加载到暂存中,但它们都在生产环境中工作。 rails 3.2.11。

assets:precompile 有效,我可以使用 bash 登录并查看在 public/assets 下预编译的所有 Assets 。但是当我尝试查看它们时,我不断收到 404。

日志中有很多这样的内容:

ActionController::RoutingError (No route matches [GET] "/assets/team_accessories_ad.png"):

我觉得我几乎什么都试过了。即使文件在那里,也不会路由到 public/assets 来获取它们。我做错了什么吗?

谢谢

编辑:在我的例子中,它是由 12factor gem ( https://github.com/heroku/rails_12factor ) 引起的。当我删除这个 gem 时,一切都开始工作了!

谢谢

最佳答案

你的问题是你的图片在你的 Assets 文件中没有动态链接:


SCSS

Rails 与 SCSS 捆绑在一起因为这允许您正确地预编译图像 Assets 。当您使用 rake assets:precompile 时,SCSS 会动态呈现,而 CSS 无法动态呈现 Assets

因为 Rails fingerprints the assets当它们被预编译时,这意味着许多图像资源(在预编译前名称为 XXXX.png),在预编译后路径将被破坏(使它们成为 XXX-dsdasdfew5823459432jt342j52435 .png)

解决方案是在scss中使用动态图片路径:

#app/assets/stylesheets/images.css.scss
body {
background: asset_url('image_path.png')
}

这允许您在预编译时动态渲染图像路径,让您能够在生产中查看图像

关于ruby-on-rails - Heroku 不加载预编译的 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19967916/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com