2012-01-05 27 views
0

我有一个模型,我想让用户在不同点编辑模型属性的不同子集。考虑具有属性A,B,C,D,E和F的模型。提供用于编辑轨道中的一个模型的替代形式

我希望最初创建的模型具有A和B字段的表单。然后在过程的另一个步骤I想要向用户显示编辑模型的表单,并且该表单具有C和D和E的字段。另一点,我想向他们展示编辑模型的表单,并且该表单具有A,E和F.我的实际情况比这更复杂,但为了这个问题,我认为这是适当的。提供不同形式的不同好方法有哪些?我现在能想到的唯一方法是:

  • 对每种情况都有不同的操作和相应的表单,并在routes.rb文件中创建必需的路由。

回答

2

你见过Railscasts video that deals with multi-step forms

我用我的当前项目非常相似的实施方案,其中用户可以在部分填写自己的个人资料...

+0

这确实是一个很好的教程。我发现它也非常有用。 – Tabrez 2012-01-05 07:53:19

+0

与Railscast实现相比,我使用的一个区别是在每次点击“下一页”后实际保存模型,而不是将其存储在会话cookie中。这意味着用户可以结束他们的会话,但仍然有数据存储在服务器上 - 并且应用程序可以使用部分数据用于应用程序的其他组件。我向模型添加了一个'current_page'列,以便可以在会话之间存储进度。 – 2012-01-05 23:58:43

0

约翰, 有关于创建多个视图没有任何限制。您可以创建不同的部分或甚至完整的文件,并根据您自己的逻辑进行渲染。您将遇到的唯一实际问题是活动记录验证。您需要一种方法将某些验证本地化为某些形式。你可以使用会话来完成这个,cookies等。另一件要注意的事情是,您是仅仅收集某些项目:create,:update还是某种特定的操作方法。如果是这种情况,那么你可以使用“:on”限定符来防止验证在错误的时间发射。 Rob上面提到的教程非常好,我提出了他的答案。但这是一种方法,您可能会发现使用我提到的任何其他技术以您自己的方式实现它更容易。