【问题标题】:Ember Date Returning "Undefined" from Rails API从 Rails API 返回“未定义”的 Ember 日期
【发布时间】:2016-03-03 03:19:13
【问题描述】:

我有一个运行 Rails API 后端的 Ember 应用程序,我在两者之间遇到了一个奇怪的问题。我希望存储在 API 中的消息模型数据将堆栈向上发送到 Ember。我已经在数据库中植入了几条消息来匹配这次迁移:

class CreateMessages < ActiveRecord::Migration[5.0]
  def change
    create_table :messages do |t|
      t.text :body
      t.boolean :flagged

      t.timestamps
    end
  end
end

加上一个像这样的序列化器:

class MessageSerializer < ActiveModel::Serializer
  attributes :id, :body, :flagged, :created_at, :updated_at      
end

在 Ember 方面,我的模型设置如下:

import DS from 'ember-data';

export default DS.Model.extend({
  body: DS.attr('string'),
  flagged: DS.attr('boolean'),
  createdAt: DS.attr('date'),
  updatedAt: DS.attr('date')
});

Ember 很好地显示了标记和正文参数,但它只返回 undefined 用于 createdAtupdatedAt。通过检查 Rails 控制台,对第一条消息的快速测试会返回如下内容:

message.as_json
 => {"id"=>1, "body"=>"Etsy actually four dollar toast seitan. Schlitz twee kale chips pork belly franzen tote bag.", "flagged"=>true, "created_at"=>Wed, 02 Mar 2016 21:33:55 UTC +00:00, "updated_at"=>Wed, 02 Mar 2016 21:33:55 UTC +00:00} 

我在 GitHub 上看到一些参考资料或多或少准确地做到了这一点,但我不知道哪里出了问题。任何帮助表示赞赏!

【问题讨论】:

  • 您使用的是活动模型适配器吗?
  • 您确认日期序列化是date 转换所期望的格式吗?
  • 我可以确认 ActiveModel 正在使用中,据我所知,日期转换应该与序列化匹配。话虽如此,Ember 还是很陌生:有没有一种通过控制台快速测试的方法?

标签: ruby-on-rails json ember.js ember-data


【解决方案1】:

如果其他人有这个问题,解决方案看起来很简单。我所要做的就是添加:

ember g serializer message

然后在该文件中填写:

import DS from 'ember-data';

export default DS.JSONAPISerializer.extend({
   keyForAttribute: function(key) {
    return Ember.String.decamelize(key);
  }
});

很简单!出于某种原因,将其放入application.js 没有用,但这完成了工作。

【讨论】:

    猜你喜欢
    • 2017-09-05
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 2019-10-04
    • 2021-12-15
    • 2013-10-09
    • 1970-01-01
    相关资源
    最近更新 更多