无法让 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.
我正忙于学习 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.