Ruby on Rails 5.1.4 CSS 文件未找到,它给出了缺失的错误。在浏览器的控制台和 Heroku 日志中



我正在使用asbab的主题森林。我已将它们添加到我的 Ruby on rails 应用程序中。它在本地主机中工作得很好。但是当上传到heroku时,找不到css文件。它不会加载所有 css 文件。

红宝石 : 2.4.0

导轨:5.1.4

希罗库日志

2018-05-07T16:43:00.642798+00:00 heroku[router]: at=info method=GET path="/assets/header.css" host=printorbuy.herokuapp.com request_id=354f10c5-98e6-408a-811a-dac5b5a357f2 fwd="157.32.106.197" dyno=web.1 connect=0ms service=6ms status=404 bytes=1902 protocol=https
2018-05-07T16:43:00.169047+00:00 app[web.1]: [9a3e2628-2587-4ea2-bc24-fb43f88193f4]   
2018-05-07T16:43:00.169098+00:00 app[web.1]: [9a3e2628-2587-4ea2-bc24-fb43f88193f4] ActionController::RoutingError (No route matches [GET] "/assets/simple-line-icons.css"):

因为在部署之前所有资产都被屏蔽了,请检查指纹识别

因此,您的所有CSS都被指纹识别,例如

/assets/plugins/animate.css

必须转换为类似的东西

/assets/plugins/animate-908e25f4bf641868d8683022a5b62f54.css

类似于所有其他 CSS。

如果要解决此问题,您有2个选择

  1. 禁用资产指纹识别

    config.assets.digest = false  
    

    有关更多信息,请参阅 http://guides.rubyonrails.org/asset_pipeline.html

  2. 使用 SCSS(默认情况下使用 ROR(,https://github.com/rails/sass-rails

    • 将文件名 Home.css 更改为 Home.scss
    • 将所有url('<file-name>')更改为asset-url('<file-name>')

您是否使用资产管道来包含 CSS 文件?它应该为您处理指纹识别之类的事情。

假设你的CSS主题文件在vendor/assets/stylesheets,Rails会自动加载它。您有两个选项,将其加载到应用程序.css文件中,或使用帮助程序单独加载它。

选项 1:将 CSS 文件加载到app/assets/stylesheets/application.css

/*
*= require_self
*= require my_theme
*/

选项 2:通过 Rails 帮助程序加载 CSS 文件:

# application.html.erb
<%= stylesheet_link_tag "my_theme", media: "all" %>

我还建议您浏览官方 Rails 资产管道指南中的资产组织部分,它将帮助您理解和遵循约定,因此您不必处理此类情况。

相关内容

  • 没有找到相关文章

最新更新