无法让 Rails REST API 与 Ember.js 一起工作

Cannot get Rails REST API to work with Ember.js

我正忙于学习 this Ember.js 教程,但我正在尝试使用 Ember 2.0 做事方式(模块,使用 Ember CLI 和 ember-cli-rails gem)。这相当困难,因为 Ember 指南中的 none 遵循这些约定。

根据教程,我将 Rails 用作 JSON API 并且看起来一切正常,就服务于正确的 JSON 回应。问题是,我无法让我的 leads 模型工作。

我从 ember.debug.js 收到 TypeError: Cannot read property 'typeKey' of undefined 错误。我还从 ember.adapter.js

收到 undefined is not a function 错误

我的项目如下所示:

app/store.js

  import DS from 'ember-data';

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

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('leads', { path: '/' });
});

export default Router;

app/adapters/application.js

import DS from "ember-data";

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

export default ApplicationAdapter;

app/models/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'),
});

app/routes/leads.js

import Ember from 'ember';

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

我没有看到对 Rails 发出任何 HTTP 请求,所以我假设它甚至在尝试使用 API 之前就中断了。有人可以指出我在这里做错了什么吗?

问题似乎是 store.js,不应在此处使用。不知道为什么,但删除它会使一切正常工作。

更新:因此,在进一步了解 Ember 的工作原理后,我现在知道问题不在于文件,而是 Rails returns [=23] 的错误类型=] 回来。 Ember REST 适配器期望 json 键使用下划线,例如。 first_name,而 Rails returns 它是驼峰式的,例如。 firstName.

要将 Ember 与 Rails 一起使用,您需要使用 ActiveModel 适配器。最新版本的 ActiveModelSerialisers(AMS) 支持 JSON API.