0

我目前正在参与制作我的第一个严肃的 Web 应用程序。在过去的几个月里,我一直在疯狂地研究网络,包括 stackoverflow,研究了许多不同的技术。HTML、CSS、Javascript、backbone.js、ruby、rails 等。我对所有这些技术仍然很陌生,但不知何故设法创建了我的 javascript 驱动的用户界面的第一个版本。

基本上,我正在为音乐学校制作一个日程安排应用程序,允许用户查看教师每周的日程安排,并在开放时段申请课程。我首先使用 Backbone.js 构建了 javascript 界面,该界面由一个表格组成,其中显示已安排的课程、开放的时段以及关闭日期等内容。

这个表“视图”有一个名为 Schedule 的 Backbone Collection 作为输入,model = Lesson,并且有元数据 startDate 和 endDate。在这个集合的渲染函数中,整个表格是根据里面的课程构建的。

我希望这个应用程序是“单页”的,就像桌面应用程序一样,所以没有页面加载。为此,我想通过请求 JSON 格式的所有信息来构建这个 Schedule Collection。对服务器的“查询”应包含教师 ID 以及开始和结束日期。然后,服务器应该以 JSON 格式将所有课程传递给我,然后我将用它制作一个集合,然后渲染它以制作整个表格。

所以我想我知道我希望一切看起来如何,但不知道如何在实践中真正做到:

  1. 在服务器端,我将使用 Ruby On Rails。在过去的几天里,我学习了如何使用脚手架方法制作基本的 RESTful Web 服务,但我将如何在 Ruby On Rails 中进行操作,接收这些参数,如 TeacherID 和 start 和 endTime?如何将这些传递到服务器并让 Rails 查询数据库并将生成的课程呈现为 JSON?

  2. 在客户端构建它的最佳方法是什么?我应该使用 Schedule Collection 上的 Backbone.sync 方法来加载所有这些数据吗?我想我应该用调用这个 RoR 服务来覆盖 Schedule.sync 方法?Backbone 是否提供任何方法来使用必要的参数调用上述服务?我可以以某种方式将其解析到 Schedule Collection 中吗?

请原谅我提出非常广泛的问题,但我迷失在所有隐藏大量逻辑的技术中(我来自 Java 背景,我正在用更底层的步骤构建所有东西)但任何帮助或指导都是非常感激!

西蒙

4

2 回答 2

1

您应该在这里调用 Collection.fetch(),而不是 Collection.sync()。

请注意, fetch() 接受选项的散列,并且这些选项的“数据”键是请求的查询参数。

因此,您可以通过如下条件:

var Lesson = Backbone.Model.extend();

var SheduleCollection = Backbone.Collection.extend({
    url: '/rest/lesson',
    model: Lesson
});

var sheduleCollection = new SheduleCollection();
sheduleCollection.fetch({
    data: {where: {start: 'X', end: 'Y', teacher: 'Z'}}
});

当然,您需要教您的后端(在本例中为 RoR)解析这些参数并使用它们构建正确的数据库查询。

于 2013-04-29T13:22:34.623 回答
0
  1. 要获取 TeacherID、start 和 endTime 等数据,您可以简单地使用 jQuery.ajax 方法。我不喜欢 Rails,但我想这在 Rails 中也很简单。您必须在服务器上捕获您的数据请求(就像您捕获通常的页面请求一样)并返回 TeacherID 或任何您想要的,然后您将在成功方法中获得返回的数据,检查文档。正如我正确理解的那样,您需要在表格视图中使用该元数据,因此您可以将该逻辑放在您的表格视图初始化方法中。

  2. 要通过 RESTful api 加载 Schedule Collection 的数据,您可以调用 ScheduleCollection.fetch(),不要忘记为 ScheduleCollection 设置模型和 url 之类的参数(例如,'/rest/schedule')。

于 2013-04-29T11:40:01.017 回答