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。它使用邪惡的寶石。