Ruby on Rails 5.1.4 CSS 未找到文件它给出了丢失错误。在浏览器的控制台和 heroku 日志中
Ruby on Rails 5.1.4 CSS files not found it gives missing error. in browser's console and heroku logs
我正在使用 asbab 的主题森林。我已将它们添加到 rails 应用程序上的 ruby。它在本地主机上工作得很好。但是当上传到 heroku 时,找不到 css 文件。它不会加载所有 css 个文件。
Ruby : 2.4.0
Rails: 5.1.4
Heroku 日志
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"):
因为在部署检查之前所有资产都被屏蔽了 fingerprinting
因此,您的所有 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 文件?它应该会为您处理诸如指纹识别之类的事情。
假设您在 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 Pipeline 指南中的 Asset Organization 部分,它将帮助您理解和遵循约定,因此您不必处理案例像这样。
我正在使用 asbab 的主题森林。我已将它们添加到 rails 应用程序上的 ruby。它在本地主机上工作得很好。但是当上传到 heroku 时,找不到 css 文件。它不会加载所有 css 个文件。
Ruby : 2.4.0
Rails: 5.1.4
Heroku 日志
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"):
因为在部署检查之前所有资产都被屏蔽了 fingerprinting
因此,您的所有 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 文件?它应该会为您处理诸如指纹识别之类的事情。
假设您在 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 Pipeline 指南中的 Asset Organization 部分,它将帮助您理解和遵循约定,因此您不必处理案例像这样。