2012-01-18 20 views
2

我有我根據數據庫中的信息生成樣式表的情況。這意味着我有一個觀點/用戶/ show.css.erb包含了像代碼:如何使用SASS作爲Rails 3中視圖的模板處理程序?

a { 
    color: <%= @user.favorite_color %>; 
} 

很公平,完美的作品用的respond_to {| F | f.css}在我的控制器中。但是現在我想在我的CSS中使用一些SASS的時髦功能,比如變亮,變暗等,所以我想讓SASS解析我的視圖。但是我不知道如何在我的視圖中將SASS註冊爲模板處理程序,而沒有太多難看的黑客入侵。我只是不明白它是如何工作的。有沒有人試過這個?

我都試過,包括上海社會科學院的功能模塊,但無濟於事。

+1

我終於用'foo.css.erb'視圖修復了它,並且這段代碼是 respond_to do | format | format.css做 渲染:文本=>薩斯:: Engine.new(render_to_string,語法:SCSS,緩存:假).render 結束 結束 緩存與常規的頁面緩存處理。 – Martijn 2012-01-20 09:12:42

+0

我做了一件類似的Martijn - 儘管你必須確保你包括鏈輪背景下,讓你得到所有的資產管道東西http://stackoverflow.com/a/35059922/148410 – 2016-02-08 10:38:55

回答

2

我打算做動態用戶主題相同的前一段時間的。那時候,我發現了一個mailing list answer到類似的問題,以你的,由Nathan魏澤鮑姆(SASS的作者),這讓我回到正道:

年03月18日,上午11點46分,內森魏澤鮑姆寫道: :

還有一個原因,薩斯不允許Rails代碼動態訪問 - 見 的薩斯部分ofhttp://haml.hamptoncatlin.com/docs/rdoc/files/FAQ.htmlfor 一個簡短的討論。 Sass也很慢,因爲它只編譯一次,所以對於生產環境來說這可能太慢了。

該鏈接不工作了,但SASS FAQ只有一個名爲Can I use a variable from my controller in my Sass file?其回答動態問題一節:

如果你真的,真的需要編譯薩斯對每個請求,首先確保你有足夠的緩存設置。然後你可以使用Sass :: Engine來渲染代碼,使用:custom選項傳入可以從Sass函數訪問的數據。

因此,一般來說,SASS並不是針對每個請求的動態CSS生成而設計的。相反,它旨在用作預編譯解決方案來生成靜態css文件。

+0

感謝,應該讓我去。我意識到Sass相對較慢,並且正在計劃緩存輸出。我想我會得到這個使用Sass :: Engine的工作。 – Martijn 2012-01-18 13:06:46

相關問題