【发布时间】:2014-08-11 19:10:30
【问题描述】:
我有一个使用 Rails 作为后端的 Ember CLI 应用程序。代码看起来很好,如果我访问localhost:3000,它会很好地显示 JSON 输出。但是,Ember 不显示此数据。
这是我目前所拥有的:
// ember/app/adapters/application.js
import DS from "ember-data";
export default DS.ActiveModelAdapter.extend({
namespace: 'api'
});
// ember/app/controllers/data_keys.js
export default Ember.ArrayController.extend({
sortProperties: ['name']
});
// ember/app/models/data_key.js
export default DS.Model.extend({
name: DS.attr('string')
});
// ember/app/routes/data_keys/index.js
export default Ember.Route.extend({
controllerName: 'data_keys',
model: function() {
return this.store.all('data_key');
}
});
// rails/app/controllers/api/data_keys_controller.rb
class Api::DataKeysController < ApplicationController
def index
render json: DataKey.all
end
end
// rails/app/serializers/data_key_serializer.rb
class DataKeySerializer < ActiveModel::Serializer
attributes :id, :name
end
// rails/config/routes.rb
Rails.application.routes.draw do
namespace :api do
resources :data_keys
end
end
要运行该应用程序,我使用rails s 运行Rails 端,然后在另一个终端选项卡中运行ember server --proxy http://localhost:3000。
我有什么明显的遗漏吗?我知道 Ember CLI 0.0.39 版有代理用途,但我使用的是 Ember CLI 0.0.40。
ember -v
version: 0.0.40
node: 0.10.28
npm: 1.4.21
以下是服务器返回的 JSON 示例:
{
"data_keys": [{
"id": 1,
"name": "foo"
}, {
"id": 2,
"name": "bar"
}]
}
【问题讨论】:
-
命名空间:'api' 在你的后端附加一个 /api,所以在你的 ruby 中,你也必须在 /api 上提供它。
标签: ruby-on-rails ember.js ember-cli