2011-10-05 10 views
5

Soy un poco nuevo con backbone.js y estoy luchando para obtener una colección con una relación de belong_to.Manejando una relación belongs_to con backbone.js

Me gustaría obtener una lista de usuarios (usuarios/GET) y me gustaría mostrarlos todos pero con una asociación belongs_to.

Por ejemplo, para mostrar el nombre de la empresa del usuario. Alguien sabe una solución?

estoy usando Ruby on Rails 3 con CouchDB

controlador usuarios

def index 
    User.all 
end 

colección Backbone

class UserCollection extends Backbone.Collection 

    url: -> 
    app.routes.users_url 

    model: User 

modelo Backbone

class User extends Backbone.Model 

    idAttribute: '_id' 

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

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

me gustaría mostrar la com Pany nombre así ...

%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 %> 
+0

¿Qué no está funcionando correctamente? –

+0

Bueno, lo que pertenece a la relación no funciona, lo que es lógico, por supuesto, porque el modelo no tiene nada que ver con una relación. Así que no sé cómo imprimir company.name –

Respuesta

4

no parece Backbone.js para apoyar las relaciones, ya que no hay mención de ellos en el official documentation.

No todo está perdido, sin embargo, hay algunos complementos de Backbone que añaden soporte para las relaciones, como Backbone-relational o ligament.js. No los he probado, pero Backbone-relational parece bastante activo.

actualización

Para colecciones perezoso de carga y evitar FETCH por relación, consulte el método fetchRelated en Backbone.RelationalModel:

Fetch modelos de servidor que se hace referencia en los atributos del modelo, pero aún no se han encontrado/creado. Esto se puede usar específicamente para escenarios de carga diferida.

De forma predeterminada, se lanzará una solicitud por separado para cada modelo adicional que se debe recuperar del servidor. Sin embargo, si su servidor/API lo admite, puede buscar el conjunto de modelos en una solicitud por especificando un collectionType para la relación que llama fetchRelated on. El tipo de colección debe tener un método url (modelos) obsoleto que le permite construir una url para una matriz de modelos. Vea el ejemplo en la parte superior de Backbone.Relation options o Backbone-tastypie para un ejemplo.

+0

Sí, eso se ve bien, pero eso significa que tengo que hacer una solicitud para cada fila de la colección. Entonces eso significa 20 solicitud en una acción de índice de usuarios normales. –

+0

Actualización de mi respuesta, ¿es esto lo que estás buscando? –

+0

Gracias por esto. Esta es de hecho la respuesta correcta. Lo haré de otra manera por algunas razones con el servidor, pero esta es la respuesta correcta. ¡Gracias! –

Cuestiones relacionadas