1

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

红宝石:2.4.0

导轨: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"):
4

2 回答 2

0

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

因此,您的所有 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>')
于 2018-05-08T11:57:40.487 回答
0

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

假设你有你的 CSS 主题文件vendor/assets/stylesheets,Rails 会自动加载它。您有两个选择,将其加载到 application.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 资产管道指南中的资产组织部分,它将帮助您理解和遵循约定,因此您不必处理这样的情况。

于 2018-05-08T12:11:11.793 回答