2016-04-20 38 views
0

用於填寫訂單的數據收集將以3頁的形式進行(每次只需按一下按鈕即可進入)。只有在按下最後一個按鈕後,纔會存儲在數據庫中。如何存儲從第一頁到最後一頁的數據?創建對象,在填充結束前不保存

1 page `<%= form_for(@orders)do | f | %>

<%= f.text_field :city,placeholder: "Город"%> 

    <%= f.submit "Далее", class: "btn" %> 
<% end %>` 

2頁 `<%=的form_for(@orders)做| F | %>

<%= f.text_field :time, placeholder: "Время" %> 

    <%= f.submit "Далее", class: "btn" %> 
<% end %>` 

3頁 `<%=的form_for(@orders)做| F | %>

<%= f.text_field :count, placeholder: "Количество" %> 

    <%= f.text_field :phone,placeholder: "Телефон для связи"%> 

    <%= f.submit "Заказать", class: "btn" %> 
<% end %>` 
+0

您需要提供更多詳細信息才能幫助您。你嘗試了什麼? –

+0

[編輯](http://stackoverflow.com/posts/36755930/edit)你的問題,並在那裏添加你的代碼。 –

回答

0

雖然你可以使用會話或實際節省的第一步數據庫的順序以及進行以下步驟的原子更新操作一些其他替代存儲機制可能是一個更好的解決方案。

其優點是不太複雜的邏輯,並能夠避免棘手的雞與蛋的情況,例如如何路由到一個沒有ID的資源。

class Order < ActiveRecord::Base 
    enum status: [:draft, :confirmed, :processed, :shipped] # etc... 
end 

在這個例子中,你會在數據庫上使用一個位掩碼列 - 它應該是默認的在最後一步被設爲零,你會訂單的狀態改變從draftconfirmed

有幾個寶石,如wicked用於創建嚮導(逐步形式)。

另一種替代方法是使用javascript將複雜表單分成標籤或「幻燈片」形式的步驟,而後端仍將其作爲單個操作進行處理。