我正在使用asbab的主题林。我已将它们添加到我的ruby on rails应用程序中。它在localhost中运行得非常好。但是当上传到heroku时,找不到css文件。它不会加载所有的CSS文件。
Ruby:2.4.0
Rails: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"):
答案 0 :(得分:0)
因为在部署检查fingerprinting
之前屏蔽了所有资产因此,所有的css都是指纹识别的,例如
/assets/plugins/animate.css
必须转换为类似
的内容/assets/plugins/animate-908e25f4bf641868d8683022a5b62f54.css
与所有其他css类似。
如果你想解决这个问题,你有两个选择
禁用资产指纹识别
config.assets.digest = false
使用scss(默认情况下为ror),https://github.com/rails/sass-rails
url('<file-name>')
更改为asset-url('<file-name>')
答案 1 :(得分:0)
您是否正在使用资产管道来包含CSS文件?它应该照顾指纹识别等事情。
假设您在vendor/assets/stylesheets
中有CSS主题文件,Rails会自动加载它。您有两个选项,将其加载到application.css文件中,或使用帮助程序单独加载。
选项1:将CSS文件加载到app/assets/stylesheets/application.css
/*
*= require_self
*= require my_theme
*/
选项2:通过Rails helpers加载CSS文件:
# application.html.erb
<%= stylesheet_link_tag "my_theme", media: "all" %>
我还建议您浏览官方Rails资产管道指南中的Asset Organization部分,它会帮助您理解和遵守惯例,因此您不必处理此类案例