2015-06-30 28 views
0

比方說,我有AR類:如何插入實例變量作爲css規則在Rails中?

......... 
    store :skin_properties, accessors: [ 
    :background_color, 
    :font_size, 
    :font_family, 
    :color 
    ] 
......... 

在這種方式保存的值:

{"background_color"=>"#f2f2f2", "font_size"=>"20px", "font_family"=>"Verdana", "color"=>"#000000"} 

我怎樣才能將其插入edit.haml文件作爲內聯CSS?

我想這樣的事情,但它不工作...

:sass 
    body 
    [email protected]_properties.each_with_index do |(k,v)| 
     "#{k.gsub("_","-")}:#{v};" 

回答

0

謝謝大家,想出了這樣的事情:

- css = @user.skin_properties.map {|k,v| "#{k.dasherize}: #{v};" }.join("\n") 
%style== body { #{css} } 
0

我相信你需要做的是這樣的。我不使用HAML所以你需要給它自己進行轉換:

:sass 
    body 
    <% @user.skin_properties.each_with_index do |(k,v)| %> 
     <%= "#{k.gsub("_","-")}:#{v};" %> 
    <% end %> 
+0

有點挑剔挑剔,但你考慮使用'子什麼''over'gsub'有一點速度提升,因爲它看起來像每個屬性只包含至多1個下劃線。 –

+0

是的我認爲你是對的,'sub'會更高效一些,因爲你只替換一個字符而不是用全局'gsub'改變所有字符。這是否回答你的問題? – Cyzanfar

1

你可以嘗試哈希轉換成一些標籤的style財產。

實施例:改變

{"background_color"=>"#f2f2f2"}

style: {'background-color: #f2f2f2'}

0
:sass 
    body 
     [email protected]_properties.map{|k,v| "#{k.gsub("_","-")}:#{v};" }.join 
+1

你應該爲你的答案提供一些解釋。 –

1

您正在靜默運行紅寶石代碼(即使用-,代替=)。

另外,嘗試使用dasherize對於這樣的情況:

:sass 
    body 
     = @user.skin_properties.map{|k,v| "#{k.dasherize}: #{v};" }.join