Javascript 使用参数在Backbone.js集合和Ruby on Rails服务之间进行通信

Javascript 使用参数在Backbone.js集合和Ruby on Rails服务之间进行通信,javascript,ruby-on-rails,ruby,backbone.js,parameter-passing,Javascript,Ruby On Rails,Ruby,Backbone.js,Parameter Passing,我目前正在参与制作我的第一个严肃的web应用程序。在过去的几个月里,我一直在疯狂地研究网络,包括stackoverflow,研究许多不同的技术。HTML、CSS、Javascript、backbone.js、ruby、rails等等。我对所有这些技术都还很陌生,但我还是设法创建了我的Javascript驱动的用户界面的第一个版本 基本上,我所做的是一个音乐学校的日程安排应用程序,允许用户查看教师每周的日程安排,还可以在开放的时段申请课程。我首先使用Backbone.js构建了javascript

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

基本上,我所做的是一个音乐学校的日程安排应用程序,允许用户查看教师每周的日程安排,还可以在开放的时段申请课程。我首先使用Backbone.js构建了javascript界面,它由一个表组成,该表显示了已经安排好的课程、开放的时段以及诸如结束日等内容

此表“视图”有一个名为Schedule的主干集合作为输入,模型为Lesson,元数据为startDate和endDate。在这个集合的render函数中,整个表是基于其中的课程构建的

我希望这个应用程序是“一页”,就像一个桌面应用程序,所以没有页面加载。为此,我希望通过请求JSON格式的所有信息来构建此计划集合。对服务器的“查询”应包含教师id以及开始和结束日期。然后,服务器应该以JSON格式向我传递所有课程,然后我将从中生成一个集合,然后呈现它以生成整个表

所以我想我知道我想要什么样的东西,但不知道如何在实践中做到:

  • 在服务器端,我将使用RubyonRails。在过去的几天里,我已经学会了如何使用scaffold方法创建基本的RESTful Web服务,但是如何在RubyonRails中创建一个接收诸如TeacherID、start和endTime等SE参数的操作呢?如何将这些信息传递给服务器,让Rails查询数据库并将结果转换成JSON

  • 如何在客户端构建此功能的最佳方法?我应该在Schedule集合上使用Backbone.sync方法来加载所有这些数据吗?我想我应该通过调用此RoR服务来覆盖Schedule.sync方法?主干网是否提供了使用必要参数调用上述服务的方法?我能把它解析到日程表集合中吗

  • 请原谅我提出了非常广泛的问题,但是我对隐藏了大量逻辑的所有技术都感到迷茫(我来自Java背景,当时我正在用更低级的步骤构建所有东西),但是非常感谢任何帮助或指导

    西蒙

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

  • 要通过RESTful api加载ScheduleCollection的数据,可以调用ScheduleCollection.fetch(),不要忘记为ScheduleCollection设置参数,如model和url(例如“/rest/Schedule”)


  • 您应该在此处调用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)解析这些参数并使用它们构建正确的数据库查询