【发布时间】:2011-01-06 12:14:14
【问题描述】:
自从我听说它以来,我一直在使用 JSON 来处理我的 Rails 应用程序中的 AJAX 功能,因为使用 RJS/渲染 HTML “感觉”是错误的,因为它违反了 MVC。我参与的第一个重 AJAX 项目以 20-30 个控制器动作结束,这些动作直接与特定的 UI 行为相关联,我的视图代码分布在控制器动作、部分和 rjs 文件中。使用 JSON 允许您将视图特定代码保留在视图中,并且仅通过 AJAX 与视图无关/RESTful 控制器操作对话以获取所需数据。
我在使用纯 JSON 时发现的一个令人头疼的问题是,您必须通过 JS 来“渲染”HTML,而在 AJAX 的情况下,它必须更新大量 DOM 元素,这可能是一种真正的痛苦。我最终得到了像
这样的长字符串构建代码// ...ajax
success: function(records){
$(records).each(function(record){
var html = ('<div id="blah">' + record.attr +
etc +
')
})
}
其中 etc 是 10-15 行基于记录数据动态构建的 HTML。除了烦恼之外,这种方法的一个更严重的缺点是 HTML 结构的重复(在模板和 JS 中)。* 这种方法有更好的做法吗?
(我最终接触的动机是我现在的任务是更新 HTML,如此复杂,它首先需要两个嵌套的 Ruby 代码循环才能呈现。在 Javascript 中复制它似乎很疯狂。)
- 我考虑过的一件事是直接从文件系统加载静态部分文件,但这似乎有点多。
【问题讨论】:
标签: javascript jquery ruby-on-rails ajax json