2011-05-02 80 views
1

我正在構建一個表單嚮導,引導用戶完成已經創建和部署的表單。模型和控制器應該保持不變,唯一改變的是視圖(指導用戶通過每個表單域)。什麼是完成這項任務的最好(也是最簡單的,如果可能的話)?Rails - 相同的模型/控制器,但不同的視圖

即使通過嚮導,一旦用戶保存了他們的表單,它將通過相同的模型和控制器保存到同一個數據庫中。從做一點研究看來,這顯然可以通過創建新視圖,創建一個簡單的控制器來擴展原始控制器,並將新控制器路由到新視圖。

任何建議都非常感謝。謝謝!

回答

2

做一些研究之後,我想通了一對夫婦的方式來完成我的任務:

  • 一種簡單的方法是在窗體控制器中創建嚮導動作。讓嚮導操作呈現嚮導的視圖。
  • 一個更好的方法是創建一個嚮導控制器並讓它具有窗體控制器的子類。覆蓋新的動作,並呈現嚮導視圖。這是更受歡迎的方法,因爲Rails中的基本CRUD操作可以免費獲取REST。因此,遵循這種方法將產生一個RESTful嚮導。
2

你一定要看看這裏:

http://railscasts.com/episodes/217-multistep-forms

否則,不久回答,你可以告訴你的控制器的任何行動來呈現唉視圖你want.That就是在基本骨架控制器來完成:

render :edit 
+0

@apneadiving我可以簡單地創建一個FormWizard控制器來代替ApplicationController,而不是繼承原始控制器的子類(我們稱之爲Form控制器)。從那裏,我可以指定我希望FormWizard具有哪些動作,每個動作都可以呈現特定的視圖。這是一個好方法嗎?但是,如何將新控制器/視圖鏈接到表單的模型? – webren 2011-05-03 22:33:08

+0

@apneadiving在將FormWizard控制器和視圖鏈接到Form模型方面,我認爲這與在FormWizard控制器中創建實例變量並使其通過Active Record進行數據推拉操作一樣簡單。 – webren 2011-05-03 22:39:08

+0

這是一種繼續進行的方式,但我不確定是否需要它,原因有兩個:1)通常,嚮導不會將模型保存在兩頁之間,而只是在表單的末尾,這是它們的目的,並且屏幕截圖顯示它的成功2 )一個嚮導應該只有一個url。否則,你正在寫一個多頁的表格,這也很好:) – apneadiving 2011-05-03 22:42:52

相關問題