我想为用户添加一种方法,指定在网站上使用的几种颜色,而不是我的核心CSS中的基本颜色。我已经通过下面的代码完成了这个,但它不能在我的Heroku托管生产环境中工作,特别是具有自定义域和通过Cloudflare路由的DNS(即它适用于my-app.herokuapp.com但不适用于www。 my-custom-domain.com)。如果我直接在浏览器中打开自定义CSS文件(通过页面源)并刷新它,那么CSS将反映在网站上。这是Heroku的限制吗? CloudFlare的?我的方法不太理想吗?
视图/布局/ 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" />
答案 0 :(得分:0)
默认情况下,Cloudflare会使用某些扩展(包括CSS和Javascript)缓存所有静态内容。为了解决这个问题,我在Cloudflare帐户中添加了一个页面规则,以绕过www.mycustomdomain.com/application/custom_colors.css
的缓存。更多信息here。