id喜欢使用edit
和update
操作制作带有rails的多步骤表单。所以我希望它像表格的step 1
,用户填写他的姓名,地址和电话号码。然后,用户点击save and continue
然后他填写了他的送货地址,然后点击save and continue
并填写他的帐单邮寄地址。我看到了ryan bates版本,但它不是我想要的东西。我想在第一步之后保存订单,所以如果用户没有完成表格,我可以打电话给他们,问他们出了什么问题。任何人都可以向我推荐一个教程或者给我一个如何使用edit
和update
方法制作订单表单的示例吗?
答案 0 :(得分: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
它不漂亮,但我强烈推荐这样的模式。任何更复杂的事情,当你的注册流程改变时你需要重写它。
答案 1 :(得分:0)
这个问题有不同的方法。
我特别喜欢的解决方案是在模型中实现类似“状态机”的功能。通过这种方式,我可以坚持每个示例,多步骤表单的进度,而不必使用比新/创建和编辑/更新更多的操作。
我目前正在使用State Machine gem for rails进行重型长机器应用程序。
希望它可以帮到你!
答案 2 :(得分:0)
有一个很棒的关于创建多步骤向导表单的Railcast,您可以找到here。它使用了邪恶的宝石。