使用backbone.js处理belongs_to关系

时间:2011-10-05 16:28:38

标签: ruby-on-rails backbone.js

我对backbone.js有点新意,我正在努力寻找带有belongs_to关系的集合。

我想获取一个用户列表(users / GET),我想显示所有用户,但是有一个belongs_to关联。

例如,显示用户的公司名称。有人知道解决方案吗?

我使用Ruby on Rails 3和CouchDB

用户控制器

def index
  User.all
end

Backbone集合

class UserCollection extends Backbone.Collection

  url: ->
    app.routes.users_url

  model: User

骨干模型

class User extends Backbone.Model

  idAttribute: '_id'

  defaults: {
    "email": null
    "mobile": null
    "loc": null
  }

  url: ->
    app.routes.users_url + '/' + (@id || '')

我想像这样展示公司名称......

%script{:id => "user-resource-template", :type => "text/template"}
  %td= check_box_tag "select", 1, false, :class => "checkbox", "data-id" => raw("<%= _id %>")
  %td <%= name %>
  %td <%= email %>
  %td <%= company.name %>

1 个答案:

答案 0 :(得分:4)

Backbone.js似乎不支持关系,因为official documentation中没有提及它们。

但是,所有内容都没有丢失,有一些Backbone插件可以增加对关系的支持,例如Backbone-relationalligament.js。我没有对它们进行测试,但Backbone-relational看起来非常活跃。

<强>更新

要延迟加载集合并阻止每个关系进行一次抓取,请参阅Backbone.RelationalModel中的fetchRelated方法:

  

从服务器中获取模型中引用的模型   属性,但尚未找到/创建。这可以使用   特别适用于延迟加载场景。

     

默认情况下,将为每个其他模型触发单独的请求   这是从服务器获取的。但是,如果您的服务器/ API   支持它,你可以在一个请求中获取模型集   为您调用fetchRelated的关系指定collectionType。   collectionType应该被覆盖   url(models)方法,允许它构造一个url   对于一系列模型。请参阅顶部的示例   例如Backbone.Relation optionsBackbone-tastypie