【问题标题】:Rails 'Preview State' Using Cookies/SessionRails 使用 Cookies/Session 的“预览状态”
【发布时间】:2011-05-15 03:43:00
【问题描述】:

这似乎是一个常见问题,但我还没有找到一个非常“详细”的答案 - 我正在寻找让用户在提交之前预览他们将要提交的表单的最佳方式。

显然,将其存储在数据库中并不是最好的选择(这就是我现在正在做的),因为必须有一个过程来删除它,并且有很多场景。

详情
我不想向用户显示 edit 操作,我想向用户显示 show 操作,并且在屏幕的顶部和底部有一个 发布按钮。

我的问题:

  1. 您将如何将表单中的信息存储到会话中(寻找一些控制器代码)
  2. 您如何知道在 show 操作中您正在显示预览,而不是“真实”对象。 (或者您是否有单独的预览操作?)(在这里寻找一些控制器/视图代码)
  3. 一旦用户“完成”会话数据,您将如何删除它?

我认为存储在数据库中与将其存储在会话中存在相同的问题,清理,我错了吗?最好的方法是什么?

【问题讨论】:

  • 不是一个真正的答案,但有一些灵感:github.com/MrRuru/rails_form_autosave
  • 我不喜欢在会话中存储数据的想法,因为在某些情况下它可能会占用大量空间。我认为在数据库中存储未发布的记录没有任何问题。可能,您只需要添加一些布尔属性“已发布”。在显示视图中显示带有“发布”按钮的表单,以防案例记录尚未发布。并执行任务以清除过时的未发布记录。
  • @apneadiving 非常好,谢谢,我去看看。
  • @taro 我同意,就像我说的那样,数据库是目前使用“状态”字段实现的方式 - 但我怎么知道它什么时候过时?我认为经过这么长时间它不再使用了吗?是否有后台进程通过并删除它们?我必须通知用户预览版会在很长一段时间后过期并将被删除。使用“状态”列,他们可以将其另存为草稿。如果它即将过期,请保存它,不是吗?
  • 您可以将几天前创建的未发布记录视为已过时(应注意该政策)。可以通过 cron 每天执行一次或更频繁地执行 Rake 任务。此外,您可以实现一些单独的 rake 任务来通知用户有关待处理的未发布记录,这些记录将很快被删除。如果您愿意或更长的时间,草稿可能会保持不变。

标签: ruby-on-rails session-variables preview


【解决方案1】:

您可以将几天前创建的未发布记录视为已过时(用户必须了解该政策)。可以通过 cron 每天执行一次或更频繁地执行 Rake 任务。此外,您可以实现一些单独的 rake 任务来通知用户有关待处理的未发布记录,这些记录将很快被删除。草稿是个好主意,如果您愿意或长期使用,可能会保持不变。

【讨论】:

    猜你喜欢
    • 2017-10-15
    • 2014-04-16
    • 2020-06-29
    • 2016-07-12
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多