如何在Rails中插入实例变量作为css规则?

时间:2015-06-30 11:33:11

标签: css ruby-on-rails ruby

让我们说我有AR课程:

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

以这种方式保存值:

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

如何将其作为内联css插入 edit.haml 文件?

我尝试过类似的东西,但它没有用......

:sass
  body
    -@user.skin_properties.each_with_index do |(k,v)|
      "#{k.gsub("_","-")}:#{v};"

5 个答案:

答案 0 :(得分:1)

您可以尝试将哈希转换为某个标记的style属性。

示例:更改

{"background_color"=>"#f2f2f2"}

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

答案 1 :(得分:1)

您正在默默运行ruby代码(即使用-而不是=)。

此外,请尝试使用dasherize来解决此类情况:

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

答案 2 :(得分:0)

我相信你需要这样做。我不使用haml所以你需要自己转换它:

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

答案 3 :(得分:0)

:sass
    body
       =@user.skin_properties.map{|k,v| "#{k.gsub("_","-")}:#{v};" }.join

答案 4 :(得分:0)

谢谢大家,想出了类似的东西:

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