2011-09-16 37 views
5

在一个Rails 3.1.0项目中,我有几个可定制属性的公司,如background_color和link_color。我希望能够设置一些无礼的变量,像这样:如何访问Sass中的Rails对象?

$background_color: <%= @company.background_color %> 
$link_color: <%= @company.link_color 

... 

这不起作用,因为@company为零时,萨斯就执行。我不知道如何解决这个问题,这是动态的(公司可以创建,颜色可以改变,视图立即更新)。有什么建议么?

+0

每个网站/页面只有一个。 – complex

回答

0

我想你也许可以做一些事情,就像你有什么存在,但你需要的文件的扩展名更改为“.css.scss.erb”

+0

啊,我应该提到我尝试过。它在application.css.sass.erb中,但没有骰子。 – complex

+0

然后我想你将不得不通过控制器运行请求,所以创建链接标签,路由到响应css请求或某事的控制器 – Matthew

1

我能想到的几个方法关闭我的头顶:

  1. 通过控制器提供样式表。
  2. 使用CSS类来配置颜色,并通过控制器,内联部分或CSS @import来提供该CSS。

通过控制器服务你的样式表非常简单,所以没有什么可说的。这可能有点丑陋和麻烦。

对于第二个,你会添加几个额外的CSS类:

.custom-bg { 
    background-color: some-default-bg; 
} 
.link-fg { 
    color: some-default-fg; 
} 
/*...*/ 

然后需要使用自定义背景色需要自己平时的CSS类和custom-bg任何元素;其他可配置值将需要类似的恶劣设置。要提供自定义CSS,您可以使用标准ERB部分将<style>元素嵌入到HTML中,或者您可以通过控制器(通过<style src="...">@import)提供CSS。所以你会在你的HTML中使用老派的多个CSS类来伪造SASSy。

还有JavaScript。你会需要一些方法来直接与东西确定需要它们的颜色调整的元素,然后调整他们是这样的:

$('.need-custom-background').css('background-color', '...'); 
0

要在此跟进,我没有创建一个样式控制器,但它是相当做作Sass解析和资产管道负载路径都可以正常工作。我最终抛弃了这些风格并重新组织了样式,这样我就可以为每个在公司更新时重新生成并上传到S3的公司生成一个静态样式表。