3

id喜欢使用editupdate动作制作轨道的多步表单。所以我希望它像表格的step 1一样,并且用户填写他的姓名,地址和电话号码。那么用户点击save and continue,然后他填写他的送货地址,然后点击save and continue并填写他的账单地址。我看到了瑞安贝茨版本,但它不是我要找的。我希望在第一步之后保存订单,所以如果用户没有完成他们的表单,我可以打电话给他们,问他们出了什么问题。任何人都可以参考我的教程或者给我一个如何使用editupdate方法制作订单的例子吗?导轨多步骤形式

回答

6

通常这意味着您需要在您的模型验证中添加条件。您的验证的一些子集应适用于每个表单页面:

class User 
    validates_presence_of :first_name 
    validates_presence_of :last_name 
    validates_presence_of :street,  :if => :on_page_two? 
    validates_presence_of :city,  :if => :on_page_two? 
    validates_presence_of :postal_code, :if => :on_page_two? 
    validates_presence_of :state,  :if => :on_page_two? 
    validates_presence_of :country,  :if => :on_page_two? 
    validates_acceptance_of :terms_and_conditions, :if => :on_page_three? 

    def on_page_two? 
    # whatever you need to determine the page number 
    end 

    def on_page_three? 
    # whatever you need to determine the page number 
    end 
end 

这不是很漂亮,但我强烈建议这样的模式。任何更复杂的事情,您需要在注册流程更改时重写它。

0

对这个问题有不同的看法。

我特别喜欢的解决方案是在模型中实现类似“状态机”的东西。通过这种方式,我可以坚持每个示例的多步表单的进度,而不必使用比新/创建和编辑/更新更多的操作。

我目前正在研究使用State Machine gem for rails的重型长状态机应用程序。

希望它可以帮助你!

0

关于创建多步向导表单,您可以找到here。它使用邪恶的宝石。