如何持久更改在客户端呈现的Rails视图?

时间:2012-11-03 07:22:21

标签: ruby-on-rails

在我的Rails应用程序中,我有一个允许用户修改呈现的HTML的视图,例如移动按钮,更改DIV的颜色等。如何保持这些更改,以便在下一次呈现视图时时间,那些变化都反映出来了?

我的第一个想法是将修改后的HTML作为文本列存储到数据库中。但是我真的不喜欢这种方法,因为HTML可以任意大,更不用说性能会非常糟糕。我挖到了,到目前为止还没有任何线索,这让我感到困惑,因为我不认为这是一个罕见的场景:WYSIWYG类型编辑器,网站构建器应用程序应该都需要解决这个问题。这让我想知道我是否会走错路。

非常感谢任何见解!

3 个答案:

答案 0 :(得分:0)

为此,您需要为按钮提供一些位置编号。移动这些按钮后,调用ajax请求将这些位置以序列化方式存储在数据库或缓存中。

  [button3, button1, button4, button2] or "button1, button4, button3, button2"

通过循环此对象(将此对象转换为数组),您可以在下次渲染视图时显示这些按钮。

你可以用div的颜色做同样的事。给你的div提供一些独特的id,并用颜色代码存储这些id。

我希望这会对你有所帮助。

答案 1 :(得分:0)

听起来用户对DOM有很多控制权,因此在每个元素的基础上存储更改没有意义 - 这很难维护并且非常低效。

用户将更新HTML和CSS,这些只是字符串,因此一个好的解决方案可能是将修改后的HTML和CSS呈现为字符串并将它们存储在MongoDB文档中(一起或单独),然后引用当你想再次加载页面时,那些Mongo文档。

答案 2 :(得分:0)

我想我找到了一个解决方案,即:

  1. 创建一个名为“Site”的模型
  2. 将页面分成多个逻辑部分,例如徽标/标题,导航菜单,内容等。
  3. 编辑WYSIWYG风格的页面
  4. 通过此模型将HTML保存到数据库中
  5. 当需要呈现页面以反映更改时,从DB中提取内容并在模板中呈现“原始”