在SCSS中访问Rails模型或帮助程序

Dre*_*rew 8 ruby-on-rails sass ruby-on-rails-3.1 asset-pipeline

我在Asset Pipeline中使用Rails 3.1和SCSS.无论如何都要访问SCSS文件中的Rails助手或控制器数据?就像是...

#main {
   background-color: #{current_user.preferences.background_color}
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以自己设置,$variables但我不确定如何从控制器的数据中填充它们.

Min*_*Pan 8

据我所知,这不是Asset Pipeline的设计目标.

想一想,您有一个rake assets:precompile命令将所有.scss.erb文件转换为静态.css文件.

那你怎么可能current_user从那个.scss.erb文件中访问变量呢?

在我看来,不可能在.scss.erb或中获得控制器变量.coffee.erb.

  • 这篇文章帮助我完成了这个过程http://www.krautcomputing.com/blog/2012/03/27/how-to-compile-custom-sass-stylesheets-dynamically-during-runtime/ (2认同)

cor*_*ard 7

您可以使用Rails 3.1链接模板处理器,这样您就可以执行my.css.scss.erb,然后嵌入您的变量:

$user-background-color: <%= current_user.preferences.background_color %>
Run Code Online (Sandbox Code Playgroud)

然后,您可以在整个SCSS中使用Sass变量.

我采用了不同的方法来解决Rails 3.0的这个问题:使用SASS和用户指定的颜色