[英]how to use rails model attributes inside sass?
我想使用通過表單提交的字符串值(十六進制)作為div類的背景色。
形式為: <%= f.text_field :backgroundcolor %>
html是: <div class="bottle"></bottle>
CSS是:
.bottle {
background-color: <%= color.backgroundcolor %>
}
但我只是收到無效的CSS錯誤。 如何在Sass中使用這些屬性? 我可以將它們用作內聯CSS,但不希望這樣做。
獲得所需結果的唯一方法是持久存儲數據(存儲在數據庫中)。
的CSS
如果可以從數據庫或其他來源獲得color
var,則可以在CSS中調用它:
#app/assets/stylesheets/application.sass
.bottle
background-color: <%= Option.find_by(title: "color").value %>
這會給你訪問存儲在我們的虛擬模型中的價值。但是,它不會在運行更新(即表格提交)。
每當您將代碼推送到“生產”時,Rails都會期望“預編譯”資產。
預編譯是將所有資產連接到單個文件(通常是application.css
)的地方。 此過程使您的資產保持靜態 。 確實, SASS
/ SCSS
只是該過程的預處理器 (它們在壓縮程序之前運行)。
盡管您可以使資產在生產中動態變化(就像在開發中一樣),但它會大大降低Web應用的速度(必須編譯資產以進行EACH調用)。
-
要解決您的問題,你最好把你的自定義樣式或者到<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}" %>
不,我也不喜歡它,但是如果您想要動態值,那就必須這樣做。 有一些替代方法,但是您必須從后端將它們一起砍掉。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.