You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Ember对接Rails JSON:API时遇Missing Resource Type错误求助

问题原因及解决办法

这个错误的核心是Ember Data 识别的资源类型和后端返回的资源类型不匹配:

  • 后端通过jsonapi-resources返回的资源类型是复数形式的events
  • Ember默认会根据模型类名EventModel推断资源类型为单数形式的event,两者不匹配导致找不到对应schema

两种可行的解决方式:

方式1:修改Ember模型,显式指定资源类型

在event.js中添加静态属性,强制指定后端返回的资源类型:

// app/models/event.js
import Model, { attr } from '@ember-data/model';

export default class EventModel extends Model {
  static modelName = 'events';

  @attr('string') note;
  @attr('string') scheduled_on;
}

方式2:修改Rails后端的资源类型

如果不想改动Ember代码,调整jsonapi-resources的资源定义,将资源类型改为单数event:

# app/resources/event_resource.rb
class EventResource < JSONAPI::Resource
  self.type = 'event'
  
  attributes :note, :scheduled_on
  # 此处保留原有的关联定义等代码
end

补充说明

Ember Data 默认的资源类型推断逻辑是:模型类名移除Model后缀后,转为小写单数(如EventModel对应event);而jsonapi-resources默认使用资源类名的复数形式(EventResource对应events)。这是两者默认规则的冲突点,只要统一两边的资源类型字符串即可解决问题。

内容的提问来源于stack exchange,提问作者Colibri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 22:13:17