[英]User's Personal CSS Stylesheet in Ruby on Rails
我环顾四周,但无法找到实现以下目标所需的方法:
这个问题假设我所有模型控制器都正常工作,并且命名的CSS属性在默认样式表中定义。
我希望用户能够在登录时选择一些CSS属性来个性化自己的主题。 基本属性是“正文”和“页面包装”颜色。 (前景)
我希望他们能够在用户的编辑页面中选择这些属性(从表单?)。 (已创建)
关于如何进行这项工作或在正确的方向上取得良好的领导的任何想法?
谢谢你的帮助。
我认为最好的方法是通过javascript,在头上生成具有所需样式的样式标签。 jQuery提供了一种简单的方法,您可以将样式存储在模型的列中。
像这样:
class User
attr_accesible :styles
视图
<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
在你的form.erb中
<%= f.label :styles %>
<%= f.text_field :styles %>
我认为,只要您给他足够的提示,例如“在此字段中添加body { background-color: red }
来使背景变成红色!”,用户就可以轻松地将css样式放在此处。
关于序列化,请考虑一下 。
如果要嵌套样式,则脚本将是
//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
。 但是,嵌套它会使您陷入更多问题,我认为这根本不值得。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.