2015-03-14 5 views
2

Я занят после this Учебник Ember.js, но я пытаюсь реализовать его, используя способ Ember 2.0 делать вещи (модули, используя Ember CLI и ember-cli-rails драгоценный камень). Это довольно сложно, поскольку ни один из руководств Ember не следует этим соглашениям.Не удается получить Rails API REST для работы с Ember.js

В соответствии с учебным пособием я использую Rails в качестве JSON API, и похоже, что все работает так, как должно, с точки зрения обслуживания правильных ответов JSON. Проблема в том, что я не могу заставить мою модель leads работать.

Я получаю ошибку TypeError: Cannot read property 'typeKey' of undefined от ember.debug.js. Я также получаю ошибку undefined is not a function из ember.adapter.js

Моего проекта выглядит следующим образом:

приложения/store.js

import DS from 'ember-data'; 

    export default DS.RESTAdapter.reopen({ 
    url: 'https://localhost:3000', 
    namespace: 'api/1' 
    }); 

приложения/router.js

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

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

Router.map(function() { 
    this.resource('leads', { path: '/' }); 
}); 

export default Router; 

приложение/адаптеры/application.js

import DS from "ember-data"; 

var ApplicationAdapter = DS.ActiveModelAdapter.extend({ 
    host: 'http://localhost:3000', 
    namespace: 'api/v1' 
}); 

export default ApplicationAdapter; 

приложение/модели/lead.js

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    firstName: DS.attr('string'), 
    lastName: DS.attr('string'), 
    email: DS.attr('string'), 
    phone: DS.attr('string'), 
    status: DS.attr('string', { defaultValue: 'new' }), 
    notes: DS.attr('string'), 
}); 

приложение/маршруты/leads.js

import Ember from 'ember'; 

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

Я не вижу каких-либо HTTP-запросы делаются для Rails, поэтому я предполагаю, что он ломается даже перед попыткой использовать API. Кто-нибудь может указать, что я здесь делаю неправильно?

+0

Вы видите что-нибудь в консоли своего браузера? – Kalman

+0

Yup - третий абзац сверху перечисляет две ошибки, которые я получаю на консоли Chrome. –

+0

Насколько я вижу, нет ничего плохого в этом коде. Можете ли вы воссоздать проблему в скрипке? Кстати, почему вы снова открываете RESTAdapter? Это опасно. –

ответ

1

Похоже, что проблема была в store.js, которую нельзя использовать здесь. Не знаю, почему, но его удаление заставляет все работать так, как должно.

UPDATE: Итак, узнав больше о том, как работает Ember, теперь я знаю, что проблема не в файле, а в том, что Rails возвращает неправильный тип json. Адаптер REST от Ember ожидает, что клавиши json будут использовать символ подчеркивания, например. first_name, в то время как Rails возвращает его в случае верблюда, например. firstName.

Чтобы использовать Ember with Rails, вам необходимо использовать адаптер ActiveModel. Последняя версия ActiveModelSerialisers (AMS) поддерживает JSON API.

Смежные вопросы