自從我聽說它以來,我一直在使用JSON處理AJAX功能,因爲使用RJS /呈現HTML「感覺」錯誤,因爲它違反了MVC。我工作的第一個AJAX項目最終以20-30個控制器操作直接綁定到特定的UI行爲,我的視圖代碼遍佈控制器操作,部分和rjs文件。使用JSON允許您在視圖中保留特定於視圖的代碼,並且只能通過AJAX查看agnostic/RESTful控制器操作來獲取所需數據。通過JSON/AJAX更新HTML
我從使用純JSON發現的一個令人頭痛的問題是,您必須通過JS'呈現'HTML,這對於需要更新DOM重元素的AJAX來說可能是一個真正的痛苦。我最終得到長字符串的構建代碼,如
// ...ajax
success: function(records){
$(records).each(function(record){
var html = ('<div id="blah">' + record.attr +
etc +
')
})
}
其中etc是根據記錄數據動態構建HTML的10-15行。除了煩惱外,更嚴重的缺點是HTML結構的重複(在模板和JS中)。*這種方法是否有更好的做法?
(我爲終於伸手動機是我現在有更新HTML如此複雜,它需要Ruby代碼的兩個嵌套循環首先進行渲染。複製在Javascript中似乎瘋狂的任務。)
- 我考慮的一件事是直接從文件系統加載靜態部分文件,但這似乎有點多。
這仍然有點混亂,你必須在Javascript中包含佈局。我非常喜歡John Resig在其他答案中的模板,這些答案非常清楚(大部分)將用戶界面和控制器分開。很好,如果Jaml爲你工作:) – Jaanus 2010-01-22 00:28:53