1

每个人!

起初,我制作了一个包含大量元素的表单:文本字段、文本区域等。准备好表格后,我才明白,这么大的表格要连续填写,不太方便。我不想使用“步骤”系统(步骤 1 -> 步骤 2 -> ... -> 步骤 n),因为我希望最终用户能够以任何顺序填写此表格( + 用户可以预先看到他需要填写哪些表格),所以我将表格分成了几个选项卡

这个想法如下:一旦用户在某个选项卡中填写了表单,他点击“保存”按钮并继续到下一个(以他选择的任意顺序)。

我想知道 - 存储中间数据的最佳方法是什么?我是否应该为每个带有选项卡 ID 的选项卡表单设置一些隐藏输入以传递给模型,以便在每个“步骤”中仅验证选项卡相关数据并将其存储在数据库中。或者,也许,我应该有一个包含当前对象的 session[:object],最后我会将它存储在 DB 中并从会话中删除。

这个想法能实现吗?

提前致谢!:)

4

3 回答 3

3

有一个叫做wicked的 gem ,它可以让你以非常简单的方式创建向导,检查一下

于 2012-09-24T09:57:49.200 回答
1

我不是红宝石忍者,但在其他语言(如 php)中,我们通常使用会话来执行此操作。为什么不在 Rails 上执行此操作?

除了使用会话之外,您还可以考虑为“临时存储行”创建一个表,因此每次更改页面时都可以将数据保存到该表中,最后将它们全部保存到主表中。

如果您通常会丢失会话,这很有用......您可以将临时存储行与用户相关联,如果他丢失会话,您可以从数据库中恢复他未完成的表单。

于 2012-09-24T09:52:23.730 回答
0

您可以简单地使用Railscasts 217 - Multistep form方法,效果很好。

但是,这可能不适合您,因为您只能在收集完所有内容后存储数据,而不是逐步进行。

另一个解决方案 - 正如您所提到的 - 将使用例如 jQuery 选项卡来创建您的表单步骤,并在存储实际记录及其所有数据之前通过 AJAX/ backbone.js构建一些验证。

于 2012-09-24T09:52:38.427 回答