0

我目前正在参与制作我的第一个严重的web应用程序的参数Ruby on Rails的服务之间的通信。过去几个月我花了很多时间研究网络,包括stackoverflow,研究了许多不同的技术。 HTML,CSS,Javascript,backbone.js,ruby,rails等等。我对所有这些技术仍然很陌生,但不知何故设法创建了我的JavaScript驱动的用户界面的第一个版本。Backbone.js的集合,并与

基本上,我正在为一所音乐学校的调度应用程序,允许用户每周看到老师的进度,并在一个开放的插槽申请教训。我已经使用Backbone.js首先构建了JavaScript接口,它由一个表格组成,该表格显示已安排的课程,开放插槽和关闭日期等内容。

此表“视图”包含一个Backbone集合称为Schedule,其中model = Lesson,并具有元数据startDate和endDate。在这个集合的渲染函数中,整个表格是根据内部的教程构建的。

我想这个应用程序是“单页”,像桌面应用程序,所以没有页面加载。为此,我希望通过以JSON格式请求所有信息来构建此计划集合。对服务器的“查询”应该包含教师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的背景是我的一切建设更低水平的步骤),但任何帮助或指导,非常感谢!

西蒙

回答

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在这种情况下)来解析这些参数,并使用他们建立正确的数据库查询。

0
  1. 为了得到这样TeacherID数据,开始和结束时间,你可以使用简单的方法jQuery.ajax。我没有进入Rails,但我想这在Rails中也很简单。你必须赶上服务器上的数据的请求(如你赶上平时页面请求),并返回TeacherID或任何你想要的,那么你会得到恢复在你成功的方法,check documentation数据。正如我已经正确理解你,你需要在你的表视图中的元数据,所以你可以把这个逻辑放到你的table-view初始化方法中。

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