gpt4 book ai didi

ruby-on-rails - 在 CSS 中访问 Rails Controller 实例变量

转载 作者:数据小太阳 更新时间:2023-10-29 06:58:12 25 4
gpt4 key购买 nike

所以我在 SO 上看到很多关于在 CSS 文件中使用 erb 的讨论。我可以通过使用 <%= %> 语法并将 .erb 添加到文件中让 ERB 处理 CSS 文件,但我真正需要的是访问 Controller 中的实例变量。

searches_controller.rb

def new
@search = Search.new
@school = School.find(params[:school])
end

我真正想做的是:

searches.css.scss.erb

h1.logo {
color: <%= @school.primary_color %>;
}

但是 ERB 会抛出一个错误,因为@school 是 nil。有什么方法可以要求 Controller 访问这些实例变量吗?

我能想到的唯一其他方法是将它作为数据属性嵌入到 View 中,然后使用 JS 在前端更改它。这让我觉得可能更好,因为 CSS 文件不会更改并且每次都需要重新发送,但它也不那么优雅。

最佳答案

您还需要考虑在预编译 Assets 场景中,CSS 将在编译期间通过 Sprockets 运行,因此您最终会得到静态颜色(假设 @school 实际上是实例化它不会)。这是不可取的,因为每所学校都会有相同的颜色(无论在编译阶段碰巧是什么颜色)。

对于这样的自定义品牌,我们让用户指定他们的颜色,并在布局中包含一个 CSS block :

:css
h1.logo {
color: <%= @school.primary_color %>;
}

这并不理想,但如果您有少量自定义项,似乎工作得相当好。

关于ruby-on-rails - 在 CSS 中访问 Rails Controller 实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13944107/

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