2010-04-08 77 views
18

我想了解在轨道上的红宝石拉出向导窗体的最佳选择。理想情况下,我希望拥有它,以便应用程序注册具有后退和下一个按钮,允许用户逐步提交数据。如何在轨道上的红宝石创建向导形式

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

选项1)我注意到,ajax已被推荐作为其他关于计算器的问题的一个选项。我遇到的唯一问题是,如果javascript被禁用,用户将无法注册。理想情况下,我想让它成为Ruby on Rails的本地代码,但我愿意使用任何必要的工具来实现它。

回答

15

有几个plugins提供wizzard铁路建设便利化。
Acts as WizardWizardly似乎最受欢迎。
的主要思想是:
*创建在第一步骤中的模型
*然后编辑它在随后的步骤中,
*在每个步骤中应用部分验证和
*具有模型实现某种状态机的。

+1

谢谢,我一定会给这些镜头。 – 2010-04-10 15:59:05

+0

这是一个很好的方法(尤其是在处理文件上传时),但这些宝石都不适用于Rails 3.还有其他可用的方法吗? – 2011-05-04 22:17:46

+0

我不知道,也许尝试移植一个,它不应该很难,或者使你自己,技术是一个相当低的挂果。 – clyfe 2011-05-05 08:56:34

16

你应该看这个轨道上多步的形式投插曲:

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

准备倒带重看。他非常快!

+0

感谢您的建议。我实际上是瑞安演员的经常观察者,并且也是我自己的演员。不管怎么说,多谢拉。 – 2010-12-12 12:38:06

3

的另一种方法,对于特别简单的多步的形式,是根据步骤简单地显示 - 隐藏单个窗体的部分,这样您就不会在每一步都点击数据库,而是让用户建立自己的对象,直到他准备好一个有效的实例为止。

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

优点:仅1分贝打击,持续无效的情况下,没有任何麻烦(NOT NULL列,before_save健全检查搞砸属性),没有回调地狱

缺点:更多的HTML发送给用户,错误信息的调整,需要一个精心打造的表格类才是优雅和真正有用的