我的应用中有很多页面在加载时显示部分FOUC(闪烁的无格式内容),这是因为其中一些页面在文档的头部而不是在布局中定义了样式表和/或javascript 。根本问题是DOM在加载这些样式表之前就会触发。
为了解决这个问题,我想有几种可能性:
包含不同样式表的正确方法是什么,是否可以在不重复布局代码的情况下执行此操作?
答案 0 :(得分:1)
不确定这是否符合您的认可,但这就是我要做的。
通过删除所有非通用stylesheet_link_tag
调用来修改主布局。用它替换它们:
= stylesheet_link_tag 'style_used_in_every_page'
- @stylesheets.each do |css|
= stylesheet_link_tag css
在控制器中,指定要用于该控制器视图的样式表:
def UsersController < ApplicationController
@stylesheets = ['users', 'admin', 'print']
end
这有意义吗?没有测试过,但它应该让你走上正确的轨道。
答案 1 :(得分:0)
布局/ application.erb
<body id="body-<%= content_for :body_name %>">
...
</body>
公共/样式表/ combined.css
#header {
/* styles for all pages */
}
body#body-products {
/* styles for the products page only */
}