一般情况下:我有一个用户的应用程序,很常见。我想允许用户为他们的用户页面上传css,然后在将来加载该页面时加载该css文件。
我猜这可能是一个简单的添加一些控制器逻辑甚至在模板中(伪)
或:layout => @user_stylesheet,并将用户定义的元素呈现为部分
有没有人做过类似的事情?我发现的内容主要与主题相关,但这允许用户直接在css上说出页面。它是一种类型,但除了一个简单的选择,我可以放入一个会话。
答案 0 :(得分:1)
我的建议是上传整个样式表,然后将其放在基本样式之上。解析!重要的是,首先,并保留为您自己的用法。我过去使用过类似的系统。
答案 1 :(得分:1)
使用文件系统确实是最好的解决方案。通过保存用户提供的文件(或者如果用户在文本框中填写CSS,则生成一个文件),您不必担心设置Modified头以便正确缓存样式表,并且因为您是无论如何,只需提供静态内容,您就不必为Rails应用程序添加任何额外负载。
如果您使用Heroku或任何具有只读文件系统的东西,您可能需要使用类似S3的东西来存储CSS文件,但这对于像Paperclip这样的宝石来说相对简单。我还建议保存潜在的数据库查找,以查看用户是否在每个请求上都有自定义样式。使用特定的命名约定(包括用户ID)保存文件,然后只是不加选择地添加链接 - 发现样式表的404错误实际上并不值得担心。
我们做了一些相似的事情,虽然我们只是询问用户一些基色,然后有一个模板SASS / Compass样式表,我们将颜色插入变量并根据这些输入生成静态CSS文件。它对我们来说效果非常好,并且对我们来说几乎没有额外的计算成本。