你得到你想要的結果的唯一方法是如果你的數據(存儲在數據庫中)persisted。
CSS
如果color
VAR是可以從數據庫或其他來源,你可以把它叫成CSS:
#app/assets/stylesheets/application.sass
.bottle
background-color: <%= Option.find_by(title: "color").value %>
這將讓您訪問存儲在我們的虛構模型中的值...但是,它會而不是即時更新(IE表單提交)。
無論何時您將代碼推送到「生產」,Rails都會期望"precompile"的資產。
預編譯是所有資產連接成單個文件(通常爲application.css
)的地方。此過程使您的資產靜態。事實上,SASS
/SCSS
只是preprocessors這個過程(他們在縮小之前運行)。
雖然你可以使你的資產動態生產(因爲他們在開發中),它大大減緩你的網絡應用程序(它必須編譯資產的每個呼叫)。
-
解決您的問題,你最好把你的自定義樣式要麼到頁面,或內嵌的<head>
上的元素之一:
#app/views/layouts/application.html.erb
<head>
<style>
.bottle { background-color: "<%= Color.find_by(name: 'bottle').value %>" }
</style>
</head>
.. 。或...
<%= content_tag :div, style: "background-color: #{color.background-color}" %>
不,我不喜歡它,但如果你想要動態值,那就是必須要做的。有一些選擇,但你必須從後端一起破解它們。
你打算如何在CSS中調用'<%= color'? –
就是這樣。我有'<%@ colors.each do | color | %>'在我看來。這是有效的,因爲它是一個erb文件。我只是不知道如何做出這樣的工作。在末尾添加「.erb」(如其他地方提到的那樣)導致我無處可去,所以我認爲我錯過了一些東西。 – sabaeus