Backbone.js集合和带参数的Ruby on Rails服务之间的通信

Communication between Backbone.js collection and Ruby on Rails service with parameters

本文关键字:Rails on 服务 之间 通信 Ruby Backbone 集合 参数 js      更新时间:2023-09-26

我目前正在制作我的第一个严肃的web应用程序。在过去的几个月里,我疯狂地研究了网络,包括stackoverflow,研究了许多不同的技术。HTML, CSS, Javascript, backbone.js, ruby, rails等。对于所有这些技术,我仍然是一个新手,但我已经设法创建了我的javascript驱动用户界面的第一个版本。

基本上,我要做的是一个音乐学校的日程安排应用程序,允许用户看到老师每周的日程安排,也可以在一个开放的时段申请课程。我首先使用Backbone.js构建了javascript接口,它由一个表组成,该表显示已经安排的课程,开放的插槽和关闭日期等。

这个表"view"有一个名为Schedule的主干集合作为输入,其中model = Lesson,并且有元数据startDate和endDate。在这个集合的渲染函数中,整个表是基于里面的课程来构建的。

我希望这个应用程序是"一页",像桌面应用程序,所以没有页面加载。为此,我想通过以JSON格式请求所有信息来构建此Schedule Collection。对服务器的"查询"应该包含一个Teacher id和一个开始和结束日期。然后服务器应该以JSON格式传递给我所有的课程,然后我将从中提取一个集合,然后渲染它以生成整个表。

所以我想我知道我想要的一切看起来像什么,但不知道如何在实践中实际做到:

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

  2. 如何在客户端构建此功能?我应该用骨干吗?同步方法来加载所有这些数据?我想我应该重写日程表。方法与对此RoR服务的调用同步?Backbone是否提供了任何方法来调用带有必要参数的上述服务?我能否以某种方式将其解析为日程表集合?

请原谅我非常广泛的问题,但我迷失在所有隐藏了很多逻辑的技术中(我来自Java背景,我正在用更低层次的步骤构建一切),但任何帮助或指导都非常感谢!

西蒙

你应该调用Collection.fetch(),而不是Collection.sync()。

请注意,fetch()接受选项的哈希值,这些选项的"data"键是请求的查询参数。

所以,你可以传递这样的条件:

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)解析这些参数并使用它们构建正确的数据库查询。

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

  2. 要通过RESTful api加载ScheduleCollection的数据,你可以调用scheecollection .fetch(),不要忘记设置参数,如模型和url(如'/rest/Schedule ')到你的scheecollection。