2011-10-05 1 views
5

Sono una specie di nuovo con backbone.js e sto lottando con il recupero di una raccolta con una relazione belong_to.Gestione di una relazione apparten_con backbone.js

Vorrei recuperare un elenco di utenti (utenti/GET) e vorrei visualizzarli tutti ma con un'associazione appartiene_a.

Ad esempio per visualizzare il nome dell'azienda dell'utente. Qualcuno conosce una soluzione?

Sto usando Ruby on Rails 3 con CouchDB

regolatore utenti

def index 
    User.all 
end 

raccolta Backbone

class UserCollection extends Backbone.Collection 

    url: -> 
    app.routes.users_url 

    model: User 

modello Backbone

class User extends Backbone.Model 

    idAttribute: '_id' 

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

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

vorrei mostrare il com Nome Pany come questo ...

%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

quindi cosa non funziona correttamente? –

+0

Bene, l'appartenenza alla relazione non funziona, che è la logica del discorso perché il modello non ha nulla di una relazione. Quindi non so come stampare company.name –

risposta

4

Backbone.js non sembra sostenere le relazioni, in quanto non v'è alcuna menzione di loro nel official documentation.

Non tutto è perduto, tuttavia, ci sono alcuni plugin Backbone che aggiungono il supporto per le relazioni, come ad esempio Backbone-relational o ligament.js. Non li ho testati, ma Backbone-relazionale sembra piuttosto attivo.

Aggiornamento

Per collezioni pigro carico e prevenire una prelevare a ogni relazione, vedere il metodo fetchRelated in Backbone.RelationalModel:

Fetch modelli dal server che sono stati referenziati nel attributi del modello, ma non sono stati ancora trovati/creati. Questo può essere utilizzato in modo specifico per scenari di caricamento lento.

Per impostazione predefinita, verrà generata una richiesta separata per ogni modello aggiuntivo che deve essere recuperato dal server. Tuttavia, se il tuo server/API lo supporta, puoi recuperare il set di modelli in una richiesta tramite specificando un valore collectionType per la relazione chiamata fetchRelated. Il metodo collectionType deve avere il metodo url (modelli) sostituito che consente di creare un URL per un array di modelli. Vedere l'esempio nella parte superiore di Backbone.Relation options o Backbone-tastypie per un esempio.

+0

Sì, sembra bello ma ciò significa che devo fare una richiesta per ogni riga della collezione. Ciò significa che 20 richieste su un'azione di indice normale degli utenti. –

+0

Aggiornato la mia risposta, è questo quello che stai cercando? –

+0

Grazie per questo. Questa è davvero la risposta giusta. Lo farò in un altro modo a causa di alcuni motivi con il server, ma questa è la risposta giusta. Grazie! –