Ruby on Rails 中的用户个人 CSS 样式表



我环顾四周,但我找不到我需要做什么才能实现以下目的的线索:

这个问题假设我让所有模型控制器正常工作,并且命名的 CSS 属性是在默认样式表中定义的。

我希望用户能够在登录时选择一些CSS属性来个性化自己的主题。 基本属性将是"正文"和"页面包装器"颜色。(前景)

我希望他们能够在用户的编辑页面中选择这些属性(从表单中? (已创建)

关于我如何使这项工作或朝着正确方向的良好领导的任何想法?

感谢您的帮助。

我认为最好的方法是通过javascript,在头部生成一个具有所需样式的样式标签。Jquery提供了一种简单的方法,您可以将样式存储在模型中的列上。

像这样:

class User
  attr_accesible :styles

查看.erb

<script>
  // Assume the @styles attr has something like "body { background-color: #567;}"
  $('head').append($('<style>').html('<%= @user.styles %>'))
</script>

@styles将是模型中的另一列,因此应通过迁移
添加它

rails g migration addstylestousers styles:string

在您的表格中。

<%= f.label :styles %>
<%= f.text_field :styles %>

我认为用户将 css 样式放在这里很简单,只要你给他足够的提示,比如"在这个字段中添加body { background-color: red }让你的背景变红!

关于序列化,请考虑这一点。

如果要嵌套样式,则脚本将是

//Lets say that the user stored on @bgcolor and @fgcolor only css color codes, like '#222' or 'blue'
var bgc = '<%= @user.style.bgcolor %>'
var fgc = '<%= @user.style.fgcolor %>'
var style = 'body { background-color: ' + bgc + '; foreground-color: ' + fgc + ' }'
$('head').append($('<style>').html(style))

请记住,在这种情况下,应该User has_one :style关系。但是,嵌套它会让自己陷入更多问题,我认为这根本不值得。

相关内容

  • 没有找到相关文章

最新更新