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

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

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

任何见解都非常感谢!

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

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

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

同样你可以用div的颜色来做。 给你的div提供一些独特的id,并用color-code存储这些id。

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

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

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

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

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