簡體   English   中英

如何在Sass中使用Rails模型屬性?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM