2012-03-26 48 views
0

我一直在引用來自Railscast的關於Nested Model Form的這個令人敬畏的教程。一切都很好。但是,我注意到我需要所有添加/刪除的Ajax功能。用於CRUD的嵌套模型的Ajax

我有一個3級嵌套模型。 Country,States,Shops。例如:

United States 
|__ California 
    |__ Shop A 
    |__ Shop B 
    |__ (Add new shop) 
|__ New York 
    |__ Shop C 
    |__ Shop D 
    |__ (Add new shop) 
(Add new state) 

我已經閱讀並搜索了所有可用的教程,但似乎沒有什麼符合我的目的。他們主要提供動態添加/刪除項目的方式,但不與服務器交互。我希望一旦單擊鏈接Add...,用戶將能夠輸入信息並單擊該特定子窗體的Submit按鈕,並將其保存到數據庫中。與Remove一樣,只需點擊x即可立即刪除。

如果創建一個新的Country也可以被ajaxed,那將會很棒。但目前,我正在使用兩步法。首先,用戶創建Country,單擊Next時,它將被保存到數據庫並重定向到編輯頁面。在編輯頁面的視圖中,它檢查是否.new_record?,然後顯示其餘的子窗體。

您只能從上面給出的鏈接代碼中引用您的建議。這一點是足夠的。你的幫助非常大,非常感謝,因爲我已經偶然發現了幾個星期。

非常感謝!

回答

0

幾件事情要考慮。如果您正在使用RESTful操作(默認)執行此操作,那麼當用戶單擊「添加」時,它將不得不發送一個method =>:post。但是當用戶點擊「X」時,它將不得不發送一個方法=>:delete。當然,一個正常的選擇商店C將是一個方法=>:get。由於http方法附加到表單中,您必須動態切換 - 在Javascript中?除非您可以覆蓋路由文件中的默認靜態動詞。

同樣,添加,取出和刪除通常都在控制器上使用不同的方法,因此您必須手動調用這些方法。

這似乎意味着你應該放棄對錶單或選擇標籤的任何使用,並簡單地構建一個ajaxy列表,並適當地添加和設置你的添加和刪除鏈接。