让用户为自定义布局编写DB存储的CSS

时间:2010-12-08 15:40:59

标签: ruby-on-rails css templates

我目前正在构建一个Web应用程序(在Ruby on Rails上面),这将允许用户设置他们自己的区域(个人博客页面),并且想知道实现此目的的最佳方法是什么?

我认为Liquid用于模板会很好,但你会如何处理造型?我的目标是将每个被称为“样式”的博客与DB字段相关联,该博客将存储自定义样式表,这是最好的方法吗?

到目前为止,我已经使用“sanitize_css”辅助方法尝试了它,但它只是删除了“#stylebox”标签,这意味着什么都没有显示。

有什么想法吗?

感谢。

4 个答案:

答案 0 :(得分:3)

目前我的工作几乎和你一样。我也在尝试为用户创建一个CMS来添加页面,设置样式等等。

我的方法如下

每个用户都有他/她的子域名。 (我使用before_filter获取当前用户子域并加载他/她的网站)

关于样式,我更喜欢将样式表作为物理文件。鉴于您的方法将更灵活地编辑样式表,我不喜欢在页面顶部使用stlesheet代码。 Insted,我允许用户加载他们的样式(使用回形针)

因此,当站点加载时,我将从DB获取css路径并从路径加载样式表。

稍后我打算读取文件并将其加载到textarea,以便用户可以编辑样式表,并在保存时覆盖现有文件;

对于布局我也使用液体

欢呼声

sameera

答案 1 :(得分:0)

如果代码太多,则序列化数据并将其作为文本存储在db中。 我认为这会好得多。

答案 2 :(得分:0)

我会诚实地允许页面上的可用元素,然后将每个样式规则存储为数据库中的字段(或将它们聚合到一个巨大的字段中)。实施一些验证以确保他们不使用任何有趣的业务(如果他们只编码特定的div,他们不应该使用任何花括号。)

然后即时生成CSS。

原因?如果您希望在自己的网站上投放广告,并且允许他们只上传整个CSS,则可以轻松关闭广告div的可见性。

我认为控制他们允许主题的内容是“更安全的”;确保更多高级用户会被勾选。但你真的想成为下一个MySpace吗? ; - )

答案 3 :(得分:0)

如果您允许用户区域完全控制其CSS,那么我可能会完全避免使用数据库并使用结构化文件系统方法。您可以为包含main.css的每个用户创建子域或文件夹。这也可以让您随着用户的增长功能(图片等)进行扩展。

据说,正如Robbie所说,你可能想要考虑限制用户可以控制和不能控制的样式。否则,你可能会发现事情很快失控。对于这种方法,您可能希望使用数据库来存储可以修改的元素的属性值。