微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – 在CSS中访问Rails控制器实例变量

所以我看到很多关于在CSS文件中使用erb的讨论.我可以使用<%=%>来获取ERB来处理CSS文件语法并将.erb添加文件中,但我真正需要的是访问控制器中的实例变量.

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是零.有没有办法要求控制器访问这些实例变量?

我能想到的另一种方法是将它作为数据属性嵌入到视图中,然后使用JS在前端更改它.这让我感觉更好,因为CSS文件不会改变,每次都需要重新发送,但它也不会那么优雅.

解决方法

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

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

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

它并不理想,但如果你有少量的定制似乎工作得相当好.

原文地址:https://www.jb51.cc/ruby/268089.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐