18

我试图了解在 ruby​​ on rails 中提取向导表单的最佳选择。理想情况下,我希望拥有它,以便应用程序注册有一个后退和下一步按钮,允许用户分步提交数据。

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

选项 1)我注意到在 stackoverflow 的其他问题中建议将 ajax 作为选项。我遇到的唯一问题是如果禁用了 javascript,用户将无法注册。理想情况下,我希望它原生于 ruby​​ on rails,但我愿意使用任何必要的东西来让它工作。

4

5 回答 5

16

您应该在多步骤表单上观看此 rails cast 剧集:

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

准备好倒带再看一遍。他的速度非常快!

于 2010-11-19T10:07:32.490 回答
15

有几个插件可以在 rails 中提供 wizzard 构建便利。
充当巫师巫师似乎最受欢迎。
主要思想是:
* 在第一步中创建一个模型
* 然后在后续步骤中对其进行编辑,
* 在每个步骤中应用部分验证并
* 让模型实现某种状态机。

于 2010-04-08T21:12:13.777 回答
6

Wicked 看起来很有希望用于 rails 3:

https://github.com/schneems/wicked

于 2012-06-12T17:58:18.363 回答
5

看看wicked,在这个 rails cast 中解释:http ://railscasts.com/episodes/346-wizard-forms-with-wicked?autoplay=true

于 2013-02-07T20:37:44.133 回答
3

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

这种方法强烈支持使用表单类而不是直接使用模型(http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/)并且您需要稍微调整错误消息的呈现方式。

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

缺点:发送给用户的 html 更多,错误消息调整,需要精心构建的表单类才能优雅且真正有用

于 2013-04-02T14:42:10.350 回答