繁体   English   中英

Rails 5-用户指定的CSS在带有自定义域的Heroku上不起作用

[英]Rails 5 - User specified CSS not working on Heroku with custom domain

我想为用户添加一种方法,以指定一些颜色在网站上使用,而不是我的核心CSS中的基本颜色。 我已经通过下面的代码完成了此操作,但是它不适用于我的Heroku托管生产环境,特别是具有通过Cloudflare路由的自定义域和DNS的环境(即,它在my-app.herokuapp.com上有效,但在www上无效。 my-custom-domain.com)。 如果直接在浏览器中(通过页面源代码)打开自定义CSS文件并刷新它,则CSS会反映在网站上。 这是Heroku的限制吗? 耀斑? 我的方法不理想吗?

views / layouts / application.html.erb:

<html>
  <head>
    ...
    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => 'reload' %>
    <% if the user is signed in and has selected custom colors %>
      <%= stylesheet_link_tag(application_custom_colors_path(format: :css), media: 'all', 'data-turbolinks-track' => 'reload' ) %>
    <% end %>
    ...
  </head>
</html>

application_controller.rb

def custom_colors
  @color1 = current_user.color1
  @color2 = current_user.color2
  respond_to do |format|
    format.css
  end
end

视图/应用程序/custom_colors.css.erb

body {
  color: <%= @color1 %>;
}

就像我在上面说的,这可以在我的本地计算机上运行,​​并使用其标准my-app.herokuapp.com域部署到Heroku,但是当通过Cloudflare使用自定义域时,它将停止工作。 任何指导是非常感谢。

页面来源:

<link rel="stylesheet" media="all" href="/assets/application-3fac9a8b9a23a84ee912eb6f5438eff5514038c3646ef0a547ebb512994b6ca4.css" data-turbolinks-track="reload" />
<link rel="stylesheet" media="all" href="/application/custom_colors.css" data-turbolinks-track="reload" />

事实证明,Cloudflare默认情况下会缓存具有某些扩展名的所有静态内容,包括CSS和Javascript。 为了解决这个问题,我在Cloudflare帐户中添加了“页面规则”以绕过www.mycustomdomain.com/application/custom_colors.css的缓存。 更多信息在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM