我正在使用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个选择
禁用资产指纹识别
config.assets.digest = false
有关更多信息,请参阅 http://guides.rubyonrails.org/asset_pipeline.html
使用 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 资产管道指南中的资产组织部分,它将帮助您理解和遵循约定,因此您不必处理此类情况。