2010-07-21 69 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我認爲這也適用於任何來到這裏的人,所以我也在這裏回答。

相關問題