2010-07-21 58 views
3

我有一个rails应用程序,其中我需要一个css文件,以便通过ruby代码更改其属性。 ex。 background_color:<%=返回背景颜色的红宝石代码%>如何在css文件中编写ruby代码

因此,用户可以设置其CSS属性,并将只适用于像主题那样的用户。

谢谢!

回答

1

建立动态CSS文件,如果您只是需要一些简单 ,那么你可以做你的布局:

<head> 
.... 
<% unless current_user.theme.nil? %> 
<style> 
body{ 
    background:<%= current_user.theme.background_color%>; 
} 
</style> 
</head> 
<% end %> 

如果你开始一个新的项目,SASS是要走的路,可能如果你有足够的时间,就是要走的路。如果只有几个条目,那么在HTML中执行它可能并不坏。

注:我觉得有点肮脏,但它会工作。

3

你不能/不应该这样做。您将预编译您的资产,因此无法动态适应变化的变量。这是一个不好的模式使用。

一个更简单的方法是在您的元素(body)上添加一个类.active.inactive。或输出内联css在你的脑海中,像自定义颜色等,取决于用户登录。

你想做什么?这听起来像是你想要检查你是在生产还是在开发中?在这种情况下,你可以这样做:

<body class='<%= "development" if Rails.env == 'development' %>'> 

甚至

<body <%= "style='background-color: red;'" if Rails.env == 'development' %> 

你应该从来不需要使用Ruby在你的CSS和JavaScript,如果你发现自己在做它,你很可能接近它的错误的方法。至少这是我在多次尝试做得很好之后发现的。

你可以在你的脑袋做到这一点:

<style> 
    .user .name{ 
     color: <%= current_user.chosen_color %>; 
    } 
</style> 

附:数据属性是一种将变量等传递给javascript的非常有效的方式。这是我在这里的答案的改编:Creating scss variable in config.rb for scss files我认为这也适用于任何来到这里的人,所以我也在这里回答。