Ruby on Rails 5.1.4未找到CSS文件会丢失错误。在浏览器的控制台和heroku日志中

时间:2018-05-08 11:42:12

标签: ruby-on-rails ruby heroku heroku-cli ruby-2.4

我正在使用asbab的主题林。我已将它们添加到我的ruby on rails应用程序中。它在localhost中运行得非常好。但是当上传到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"):

2 个答案:

答案 0 :(得分:0)

因为在部署检查fingerprinting

之前屏蔽了所有资产

因此,所有的css都是指纹识别的,例如

/assets/plugins/animate.css

必须转换为类似

的内容
/assets/plugins/animate-908e25f4bf641868d8683022a5b62f54.css

与所有其他css类似。

如果你想解决这个问题,你有两个选择

  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>')

答案 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部分,它会帮助您理解和遵守惯例,因此您不必处理此类案例