2014-12-03 13 views
5

Sto configurando una nuova app con Ember CLI e un backend Rails successivo a this tutorial ma quando ho impostato un percorso per uno di i miei modelli, ho il seguente errore:Nome completo non valido: `modello: @ each`, deve essere di tipo` tipo: nome`

Error while processing route: inks.index Invalid fullName: `model:@each`, must be of the form `type:name` TypeError: Invalid fullName: `model:@each`, must be of the form `type:name` 
at __exports__.default.EmberObject.extend.resolve (http://localhost:4200/assets/vendor.js:16772:17) 
at Object.resolve [as resolver] (http://localhost:4200/assets/vendor.js:16394:25) 
at resolve (http://localhost:4200/assets/vendor.js:14930:32) 
at Object.Container.resolve (http://localhost:4200/assets/vendor.js:14510:16) 
at factoryFor (http://localhost:4200/assets/vendor.js:15013:31) 
at Object.Container.lookupFactory (http://localhost:4200/assets/vendor.js:14617:16) 
at Ember.Object.extend.modelFactoryFor (http://localhost:4200/assets/vendor.js:74810:31) 
at JSONSerializer.extend.extractArray (http://localhost:4200/assets/vendor.js:67710:22) 
at apply (http://localhost:4200/assets/vendor.js:32851:27) 
at superWrapper (http://localhost:4200/assets/vendor.js:32419:15) 

googled in giro, ma non ho idea di cosa significhi ancora. Ho verificato di avere ActiveModelAdapter e Serializer. Il modello non è complicato:

Il mio percorso è app/routes/users/index.js:

import Ember from 'ember'; 

export default Ember.Route.extend({ 
model: function() { 
    return this.store.find('user'); 
} 
}); 

app/router.js:

import Ember from 'ember'; 
import config from './config/environment'; 

var Router = Ember.Router.extend({ 
    location: config.locationType 
}); 

Router.map(function() { 
    this.resource('users'); 
}); 
export default Router; 

e il mio app/adapters/application.js è:

import DS from 'ember-data'; 

export default DS.ActiveModelAdapter.extend({ 
    namespace: 'api/v1' 
}); 

Sono ancora abbastanza nuovo con EmberCLI quindi non sono davvero sicuro di dove cercare.

risposta

2

Quindi risulta che non stavo usando ActiveModelSerializers correttamente. Dato che stavo elencando tutti gli utenti come test ho pensato che sarebbe serializzato come una lista dei dati serializzati che ho definito in UserSerializer.

stavo facendo questo nel mio controller:

def index 
    @users = User.all 
    render json: @users 
end 

quando avrei fatto questo in base ai documenti (here):

def index 
    @users = User.all 
    render json: @users, each_serializer: UserSerializer 
end 

non ho nemmeno notato i miei wasn serializzatore essere chiamato.

5

Mi sono bloccato con problema simile. Sono stata usata solo una differenza rabl.

Il problema è stato con la mia configurazione Rabl:

The JSON payload should be an object that contains the record inside a root property

Quindi, è necessario modificare la configurazione Rabl a::

Rabl.configure do |config| 
    config.include_json_root = true 
end 

o, passaggio

Rabl.configure do |config| 
    config.include_json_root = false 
end 

Ember.js documentation ci dice Opzione root all'interno del modello rabl:

collection @orders, root: 'orders' 
Problemi correlati