我有一个rails应用程序,其中我需要一个css文件,其属性可以通过ruby代码更改。 恩。 background_color:<%=返回背景颜色的ruby代码%>
因此,用户可以设置其css属性,并且仅适用于该主题的用户。
谢谢!
答案 0 :(得分:3)
你不能/不应该这样做。您将预编译您的资产,因此无法动态适应变化的变量。这是一个糟糕的模式。
更简单的方法是在元素(正文)上添加类.active
.inactive
。或者在头脑中输出内联css ,以获取自定义颜色等内容,具体取决于已登录的用户。
你想做什么?这听起来像你要做的事情来检查你是否在生产或开发?在这种情况下,您可以执行以下操作:
<body class='<%= "development" if Rails.env == 'development' %>'>
甚至
<body <%= "style='background-color: red;'" if Rails.env == 'development' %>
你永远不需要在你的css和javascript中使用ruby,如果你发现自己这么做,你可能会以错误的方式接近它。至少这是我在多次尝试这么做之后发现的。
你可以在脑子里这样做:
<style>
.user .name{
color: <%= current_user.chosen_color %>;
}
</style>
P.S。 data-attributes是一种将变量等传递给javascript的非常有效的方法
p.s.2。这是我在这里的答案的改编:Creating scss variable in config.rb for scss files我认为这对来到这里的任何人都很重要,所以我也在这里回答。
答案 1 :(得分:2)
另外,请查看http://lesscss.org/
答案 2 :(得分:1)
如果您只需要简单,那么您可以在布局中执行:
<head>
....
<% unless current_user.theme.nil? %>
<style>
body{
background:<%= current_user.theme.background_color%>;
}
</style>
</head>
<% end %>
如果你正在开始一个新项目,那么SASS就是你要走的路,如果你有足够的时间,可能就是这样。如果只是几个条目,那么在HTML中执行它可能并不坏。
注意:我觉得这有点脏,但它会起作用。
答案 3 :(得分:0)
使用SASS引擎检查this tutorial以动态更改CSS。
答案 4 :(得分:0)
查看此截屏视频,其中介绍了如何使用ERB设置动态CSS文件(Rails模板系统) http://nubyonrails.com/system/images/css-erb-small.mov