gpt4 book ai didi

css - 在不同 Controller 中加载不同布局时样式表损坏

转载 作者:行者123 更新时间:2023-11-28 12:51:50 24 4
gpt4 key购买 nike

嗨,我遇到了一个奇怪的问题。

当我点击如下三张图片所示的三个页面时

第一步 Controller 欢迎

第 2 步其他 Controller

第3步,回到step1 View Controller 欢迎

最后一张图,当我从 other controllers 回到 controller welcome 时, 即第 2 步到第 3 步。

样式表由浏览器缓存,

第 3 步的 布局与第 1 步 布局不同。

但它们是同一个页面,怎么可能,浏览器似乎缓存了css文件?

我在 application.rb 中添加了两个布局使用的两个 Assets 文件夹 config.assets.paths << "#{Rails.root}/vendor/themes"

    themes
├── ace-admin-theme
│   ├── avatars
│   ├── css
│   ├── font
│   ├── images
│   ├── img
│   └── js
└── lenord-single-page-theme
├── css
├── fonts
├── img
├── index.html
├── js
└── rs-assets

在layouts文件夹下添加了welcome.html.haml,这样welcome_controller就可以加载这个layout

layouts
├── _header.html.haml
├── application.html.haml
└── welcome.html.haml

所有的源代码我都放在这里https://gist.github.com/poc7667/0198b973fce0fbf4dd26

页面 A:好的 enter image description here页面 B:好的 enter image description here页面A:失败,页面B的样式表被缓存,它应该与原始页面A相同 enter image description here

当我为 css 注释 data-turbolinks-track 时它不起作用

奇怪的现象还是出现了。

--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -2,7 +2,7 @@
%html
%head
%title VIVOTEK DQA DEVELOPER
- = stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true
+ = stylesheet_link_tag "application", media: "all"
= javascript_include_tag "application", "data-turbolinks-track" => true
/ Description, Keywords and Author
/ basic styles
diff --git a/app/views/layouts/welcome.html.haml b/app/views/layouts/welcome.html.haml
index 28d9c99..c3e6ec8 100644
--- a/app/views/layouts/welcome.html.haml
+++ b/app/views/layouts/welcome.html.haml
@@ -2,7 +2,7 @@
%html
%head
%title VIVOTEK DQA DEVELOPER
- = stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true
+ = stylesheet_link_tag "application", media: "all"
= javascript_include_tag "application", "data-turbolinks-track" => true

我打开 firebug 查看包含的 css 文件,我发现我需要重新加载页面以加载预期的 css 文件。如何解决?

enter image description here


更新

当我重新加载页面时,控制台显示那些 css 文件已加载

Started GET "/assets/ace-admin-theme/css/bootstrap.min.css" for 127.0.0.1 at 2014-05-19 14:33:49 +0800
Started GET "/assets/ace-admin-theme/css/font-awesome.min.css" for 127.0.0.1 at 2014-05-19 14:33:49 +0800

当我点击指向其他页面的超链接(通过 url helper)时,css 将不会再次加载。

但实际上它应该再次加载 css 文件,因为一些 Controller 使用不同的布局和 Assets 。

但更糟糕的是,如果我点击链接(由 URLhelper 生成),问题就会发生但如果我通过在浏览器中手动输入 URL 转到该页面,它工作正常!!

简而言之,css 文件只在第一次加载,其他必要的 css 文件(用于其他布局)将不再加载。(如果我通过单击 URLHelperLink 查看页面),但它是手动工作的在浏览器中输入 URL(例如:localhost:3000/welcome、localhost:3000/urlcommands)

最佳答案

How could it be, it seems the browser caches the css files ?

涡轮链接

如果您使用 Turbolinks,情况似乎就是这样。 - 加载新版本的 <body>标签(离开 <head> )。这将使您的浏览器在每个请求(触发 turbolinks 的位置)使用相同的 CSS,只有在您使用相同的 layout 时才会出现问题。

这可能不是问题(如果您正在更改布局,整个页面将刷新)

测试这个的方法是关闭 turbolinks:

#app/views/layouts/application.html.erb
<%= stylesheet_link_tag "application", media: "all" %>

如果这样做,Rails 应该每次都刷新整个页面。这将允许您查看样式是否每次都会更改


CSS

您可能遇到的另一个问题是如何调用 CSS。如果您对第 3 步有不同的布局 - 您是否调用了不同的 CSS?

就个人而言,我只会为不同的步骤使用不同的样式,并将它们合并到同一个电子表格中。

这是我使用 SASS 的方式:

#app/assets/stylesheets/application.css.sass
.service
.step1
//styling

.step2
//styling

.step3
//styling

更新

我想说这里的问题很可能是您使用 Turbolinks 的代码结构。我 90% 确定问题出在 Turbolinks 上(特别是当你写到你“需要刷新”文档以使 CSS 工作时)

您能否分享您的布局以及如何在 Controller 中调用它们?

关于css - 在不同 Controller 中加载不同布局时样式表损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23625635/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com