2011-10-05 3 views
5

Je suis un peu nouveau avec backbone.js et j'ai du mal à aller chercher une collection avec une relation belongs_to.Gérer une relation belongs_to avec backbone.js

Je voudrais aller chercher une liste d'utilisateurs (utilisateurs/GET) et je voudrais les afficher tous sauf avec une association belongs_to.

Par exemple pour afficher le nom de l'entreprise de l'utilisateur. Quelqu'un connaît une solution?

J'utilise Ruby on Rails 3 avec CouchDB

utilisateurs contrôleur

def index 
    User.all 
end 

collection Backbone

class UserCollection extends Backbone.Collection 

    url: -> 
    app.routes.users_url 

    model: User 

modèle Backbone

class User extends Backbone.Model 

    idAttribute: '_id' 

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

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

Je voudrais montrer la com nom de Pany comme ça ...

%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

alors qu'est-ce qui ne fonctionne pas correctement? –

+0

Eh bien l'appartient à la relation ne fonctionne pas, ce qui est logique car le modèle n'a rien d'une relation. Donc, je ne sais pas comment imprimer company.name –

Répondre

4

Backbone.js ne semble pas soutenir les relations, car il n'y a aucune mention dans le official documentation.

Tout n'est pas perdu, cependant, il existe des plugins Backbone qui ajoutent un support pour les relations, telles que Backbone-relational ou ligament.js. Je ne les ai pas testés, mais Backbone-relationnel semble assez actif.

Mise à jour

Pour collections charge paresseux et éviter une d'extraction par rapport, voir la méthode fetchRelated dans Backbone.RelationalModel:

Fetch modèles à partir du serveur qui ont été référencés dans attributs du modèle, mais n'ont pas encore été trouvés/créés. Cela peut être utilisé spécifiquement pour les scénarios de chargement paresseux.

Par défaut, une requête distincte sera envoyée pour chaque modèle supplémentaire à extraire du serveur. Toutefois, si votre serveur/API le prend en charge, vous pouvez récupérer l'ensemble de modèles dans une requête par en spécifiant un collectionType pour la relation que vous appelez fetchRelated. Le collectionType doit avoir une méthode url (models) substituée qui lui permet de construire une URL pour un tableau de modèles. Voir l'exemple en haut de Backbone.Relation options ou Backbone-tastypie pour un exemple.

+0

Oui, cela semble bien, mais cela signifie que je dois faire une demande pour chaque ligne de la collection. Cela signifie donc 20 demande sur une action normale d'index des utilisateurs. –

+0

Mis à jour ma réponse, est-ce ce que vous cherchez? –

+0

Merci pour ça. C'est en effet la bonne réponse. Je vais le faire d'une autre façon à cause de certaines raisons avec le serveur mais c'est la bonne réponse. Merci! –

Questions connexes