【问题标题】:rails multistep form轨道多步形式
【发布时间】:2011-12-13 20:07:30
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    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
    

    它不漂亮,但我强烈推荐这样的模式。任何更复杂的东西,当您的注册流程发生变化时,您需要重写它。

    【讨论】:

      【解决方案2】:

      这个问题有不同的方法。

      我特别喜欢的解决方案是在模型中实现类似“状态机”的东西。通过这种方式,我可以保持一个多步骤表单的进度,而无需处理比新建/创建和编辑/更新更多的操作。

      我目前正在使用用于 rails 的 State Machine gem 开发一个重型长状态机应用程序。

      希望对你有帮助!

      【讨论】:

        【解决方案3】:

        有一个很棒的 Railcast 创建多步骤向导表单,您可以找到 here。它使用邪恶的宝石。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-02-06
          • 1970-01-01
          • 2020-11-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多