【发布时间】:2014-04-22 18:03:53
【问题描述】:
我有一个 Rails 应用程序,其中我需要一个 css 文件,以便它的属性可以通过 ruby 代码更改。 前任。 background_color :
因此,用户可以设置其 css 属性,并将仅适用于该用户,如主题。
谢谢!
【问题讨论】:
-
另外,看看lesscss.org
标签: ruby-on-rails
我有一个 Rails 应用程序,其中我需要一个 css 文件,以便它的属性可以通过 ruby 代码更改。 前任。 background_color :
因此,用户可以设置其 css 属性,并将仅适用于该用户,如主题。
谢谢!
【问题讨论】:
标签: ruby-on-rails
你不能/不应该这样做。您将预编译您的资产,因此无法动态适应不断变化的变量。这是一种不好的模式。
一个更简单的方法是在你的元素(body)上添加一个类.active.inactive。或者根据已登录的用户,在您的脑海中输出 inline 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>
附言数据属性是将变量等传递给javascript的一种非常有效的方法
p.s.2。这是我在这里的回答的改编:Creating scss variable in config.rb for scss files我认为这对任何来这里的人来说都是相关的,所以我也在这里回答。
【讨论】:
如果你只需要简单的东西,那么你可以在你的布局中做:
<head>
....
<% unless current_user.theme.nil? %>
<style>
body{
background:<%= current_user.theme.background_color%>;
}
</style>
</head>
<% end %>
如果您要开始一个新项目,SASS 是您的最佳选择,如果您有足够的时间,这可能也是您的最佳选择。如果只有几个条目,在 HTML 中做可能还不错。
注意:我觉得这有点脏,但它会起作用。
【讨论】: