Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 不同用户的动态样式_Ruby On Rails_Ruby_Sass - Fatal编程技术网

Ruby on rails 不同用户的动态样式

Ruby on rails 不同用户的动态样式,ruby-on-rails,ruby,sass,Ruby On Rails,Ruby,Sass,我需要每个用户的动态样式。问题是,可以在两个主题之间进行选择,一个是静态主题,另一个是用户可以更改的主题。更改后,当前用户主题值将设置为sass变量,需要预编译。如何做到这一点?在这一点上,最好依靠纯CSS功能,而不是根据每个请求编译SCS(这将非常低效) 给定此基本SCSS文件: .base-theme { .color-main { color: $blue-lighter; } // and so on } 您可以这样使用: <p class="

我需要每个用户的动态样式。问题是,可以在两个主题之间进行选择,一个是静态主题,另一个是用户可以更改的主题。更改后,当前用户主题值将设置为sass变量,需要预编译。如何做到这一点?

在这一点上,最好依靠纯CSS功能,而不是根据每个请求编译SCS(这将非常低效)

给定此基本SCSS文件:

.base-theme {
    .color-main {
      color: $blue-lighter;
    }
    // and so on
}
您可以这样使用:

<p class="color-main"> ... </p>

根据存储在数据库中的设置,您可以生成替代方案 主题如下:

<style>
.alt-theme .color-main {
  color: <%= current_user.colors.main %>;
}
</style>

.alt主题。主色{
颜色:;
}
然后再像这样应用它们:

<body class="<%= user.has_theme?? 'alt-theme' : 'base-theme'  %>">...</body>
。。。

但是处理每个请求的SASS会让你的应用程序非常非常慢。资产管道并不打算在生产部署中以这种方式使用。是的,但我需要在更改sass样式后编写用于在生产上编译sass样式的逻辑。您只需在CSS中编写主题并切换顶级类,如我的示例所示。你甚至可以不用大言不惭地做这件事。我有这样的想法:$bluedark:#486eac$蓝色打火机#58c9f3$棕色品牌:#4a4a4a$品牌红:#d1282d$深紫色:#8175c7$紫光#afa5f1$深绿色:#aec785$一些蓝色:1FB5AD$穆赞红:d90444;在“设置”页面上,我可以更改每个变量的颜色值($moozen\u red、$some\u blue等)。我将这些值保存在DB中。在这种情况下,您应该根据用户的设置生成CSS,并将其注入
标记。当然,您需要确保用户只能指定颜色等