如何在css文件中编写ruby代码

时间:2010-07-21 15:49:13

标签: ruby-on-rails

我有一个rails应用程序,其中我需要一个css文件,其属性可以通过ruby代码更改。 恩。 background_color:<%=返回背景颜色的ruby代码%>

因此,用户可以设置其css属性,并且仅适用于该主题的用户。

谢谢!

5 个答案:

答案 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