2010-10-11 56 views
26

我在編輯條目後試圖重定向到不同的頁面,我假定它使用更新代碼,因爲您正在更新數據庫。我花了一些時間才意識到我在控制器中使用了錯誤的動作。有人可以解釋如何編輯和更新工作。爲什麼有兩種不同的操作?他們之間有什麼區別?Restful Rails編輯與更新

+0

我有可以分解爲兩個不同類別的任務。我爲每個類別創建了一個控制器,鏈接到相同的任務模型。當我提交編輯表單時,它將重定向回控制器顯示操作的主要任務。它似乎是一起跳過com_tasks控制器(com_tasks =其中一個類別控制器)。我查看了呈現的html輸出,並將表單提交給了錯誤的控制器,但是我看不到任何可以改變它的方法。 – Rumpleteaser 2010-10-12 00:46:49

回答

47

編輯操作負責渲染視圖

更新動作負責與模型交互(DB更新等)

如果運行rake routes你會看到動詞的區別和行動。通常,提交表單時使用創建/更新操作。這與用於呈現視圖(顯示要提交的表單)的新操作和編輯操作不同。

+0

他們叫什麼順序?它經歷了什麼過程?編輯 - >更新 - >編輯?如果我在編輯中加入重定向,它將不會進行更新? – Rumpleteaser 2010-10-12 00:28:31

+0

正確。如果你想在*之後重定向某人*,他們已經更新了一個條目,那麼你需要將重定向放在更新操作中。 – theIV 2010-10-12 00:55:32

+1

因此,只有2個事件在該鏈中:編輯,呈現表單,然後在用戶提交時更新。如果你redirect_to去一個不同的頁面(默認通常是腳手架上的顯示視圖),那麼你會有第三個。 – 2010-10-12 03:15:48

13

另一種觀點 - 有點多餘,突出異同:

是前體動作來呈現形式,即在提交,運行創建行動。 (視圖通常被重定向回出類似的項目列表,你已經創建索引視圖)

編輯是前體動作來呈現形式,即在提交,運行更新行動。 (視圖通常重定向回顯示您已經創建的類似項目列表的索引視圖