如何在rails上的ruby中创建向导表单

我正在尝试了解在轨道上的ruby中提取向导表单的最佳选项。 理想情况下,我想拥有它,以便应用程序注册有一个后退和下一个按钮,允许用户按步骤提交数据。

因此,在第1步中,他们可以填写联系信息。 一旦完成,他们可以点击下一步并在第2步填写付款信息等。如果他们犯了错误,他们可以点击并更正它。 将需要一些步骤,而其他步骤则不需要,但您必须将其提交到最后一步以将数据提交到数据库以进行注册。 然后,他们需要能够在完成后以相同的方式返回并填写过去的步骤。 (例如:如果他们点击个人资料链接,他们可以以相同的方式重新完成步骤,因为他们不想立即完成所有步骤。也许在完成注册步骤之前给出一个跳过按钮? )。 我还需要validation已经完成的步骤,以防止他们进入下一步,直到纠正或完成。

选项1)我注意到ajax已被推荐作为stackoverflow上其他问题的一个选项。 我遇到的唯一问题是,如果禁用了javascript,用户将无法注册。 理想情况下,我希望它能够在轨道上使用ruby,但是我愿意使用任何必要的东西来使它工作。

有几个插件可以在轨道中提供瓦结构。
作为向导和向导的 行为似乎是最受欢迎的。
主要想法是:
*在第一步中创建模型
*然后在后续步骤中编辑它,
*对每个步骤应用部分validation
*让模型实现某种状态机。

你应该在多步forms上观看这个rails cast剧集:

http://railscasts.com/episodes/217-multistep-forms

准备好倒带并再次观看。 他很快!

邪恶看起来很有前途3:

https://github.com/schneems/wicked

看看邪恶 ,在这个轨道演员解释: http ://railscasts.com/episodes/346-wizard-forms-with-wicked?autoplay = true

对于更简单的多步骤forms,另一种方法是简单地显示 – 隐藏单个表单的部分,具体取决于步骤,这样您就不会在每个步骤中访问数据库,而是让用户构建他的对象直到他的准备好有效的实例。

这种方法强烈倾向于使用表单类而不是直接使用模型( http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/ )你需要调整一点错误信息。

优点:只有一个db命中,没有持久无效实例的麻烦(不是空列,before_save健全性检查混乱的属性),没有回调地狱

缺点:发送给用户的更多HTML,错误消息调整,需要一个精心构建的表单类优雅而且非常有用