【问题标题】:Ember cannot display JSON from RailsEmber 无法显示来自 Rails 的 JSON
【发布时间】: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


【解决方案1】:

我认为当您使用DS.Store#all 时,您只是在过滤存储中已经存在的记录。您需要使用DS.Store#find 从服务器获取记录。

export default Ember.Route.extend({
  controllerName: 'data_keys',
  model: function() {
    return this.store.find('data_key');
  }
});

此外,您的 ember 文件应该使用破折号而不是下划线。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    相关资源
    最近更新 更多