[英]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.