【问题标题】:User specified css for a page用户为页面指定的 css
【发布时间】:2011-05-25 01:23:01
【问题描述】:

总的来说:我有一个应用程序有用户,很常见。我希望允许用户为其用户页面上传 css,然后在将来加载该页面时加载该 css 文件。

我猜这可能很简单,比如添加一些控制器逻辑,甚至在模板中(伪)

  • 如果用户定义 css = include_stylesheets @user_stylesheet

or :layout => @user_stylesheet,并让用户定义的元素呈现为部分

有没有人做过类似的事情?我发现的内容主要与主题有关,但这允许用户直接在页面的 css 上发言。它是一种主题,但除了一个简单的选择之外,我还可以在会话中进行选择。

【问题讨论】:

  • 你有某种数据库后端吗?
  • 是的,有一个数据库后端。现在,只是用于开发的 sqlite。

标签: ruby-on-rails css


【解决方案1】:

为此使用文件系统确实是最好的解决方案。只需保存用户提供的文件(或者如果用户在文本框中填写 CSS,则生成一个文件),您不必担心设置 Modified 标头以正确缓存样式表,因为您是无论如何只是提供静态内容,您不必向 Rails 应用程序添加任何额外的负载。

如果您使用 Heroku 或任何具有只读文件系统的设备,您可能需要使用 S3 之类的工具来存储 CSS 文件,但使用 Paperclip 之类的 gem 就相对简单了。我还建议保存潜在的数据库查找以查看用户是否对每个请求都有自定义样式。使用特定的命名约定(例如包含用户 ID)保存文件,然后不加选择地添加链接 - 查找样式表时出现 404 错误并不值得担心。

我们做了一些非常相似的事情,虽然我们只是要求用户提供一些基本颜色,然后有一个模板 SASS / Compass 样式表,我们将颜色作为变量插入并根据这些输入生成一个静态 CSS 文件。它对我们来说非常有效,并且对我们来说几乎为零的额外计算成本。

【讨论】:

  • Ryan,我想实施您最后建议的解决方案。你有一些代码或有用的信息可以分享吗?提前非常感谢。
【解决方案2】:

我的建议是只上传整个样式表,然后将其置于您的基本样式之上。首先解析!重要的是,并将其保留供您自己使用。我过去使用过类似的系统。

【讨论】:

    猜你喜欢
    • 2014-06-06
    • 2012-05-06
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 2011-11-05
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多