rails多步形式

时间:2011-10-24 03:34:57

标签: ruby-on-rails ruby-on-rails-3 forms ruby-on-rails-3.1 wizard

id喜欢使用editupdate操作制作带有rails的多步骤表单。所以我希望它像表格的step 1,用户填写他的姓名,地址和电话号码。然后,用户点击save and continue然后他填写了他的送货地址,然后点击save and continue并填写他的帐单邮寄地址。我看到了ryan bates版本,但它不是我想要的东西。我想在第一步之后保存订单,所以如果用户没有完成表格,我可以打电话给他们,问他们出了什么问题。任何人都可以向我推荐一个教程或者给我一个如何使用editupdate方法制作订单表单的示例吗?

3 个答案:

答案 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。它使用了邪恶的宝石。