Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 余烬,拥有许多和不属于它的东西';行不通_Javascript_Ruby On Rails_Ember.js_Ember Data - Fatal编程技术网

Javascript 余烬,拥有许多和不属于它的东西';行不通

Javascript 余烬,拥有许多和不属于它的东西';行不通,javascript,ruby-on-rails,ember.js,ember-data,Javascript,Ruby On Rails,Ember.js,Ember Data,我尝试了一个简单的应用程序来显示一些用户数据 我的API向我返回以下json: { "roles":[ { "id":5, "name":"admin", "alias":"Administrator", "users":[ { "id":1, "username":"Evolutio", "e

我尝试了一个简单的应用程序来显示一些用户数据

我的API向我返回以下json:

{
   "roles":[
      {
         "id":5,
         "name":"admin",
         "alias":"Administrator",
         "users":[
            {
               "id":1,
               "username":"Evolutio",
               "email":"mail@evolutio.tld",
               "display_role":"Administrator"
            }
         ]
      },
      {
         "id":2,
         "name":"user",
         "alias":"Benutzer",
         "users":[

         ]
      },
      {
         "id":1,
         "name":"banned",
         "alias":"Gesperrt",
         "users":[

         ]
      },
      {
         "id":3,
         "name":"mod",
         "alias":"Moderator",
         "users":[

         ]
      },
      {
         "id":4,
         "name":"support",
         "alias":"Supporter",
         "users":[

         ]
      }
   ]
}
我的用户/model.js:

import DS from 'ember-data';

export default DS.Model.extend({
  username: DS.attr('string'),
  email: DS.attr('string'),
  display_role: DS.attr('string'),

  roles: DS.belongsTo('role'),
});
还有我的角色/model.js

import DS from 'ember-data';

export default DS.Model.extend({
  name: DS.attr('string'),
  alias: DS.attr('string'),

  users: DS.hasMany('user'),
});
通过此设置,我在开发人员控制台中遇到以下错误:

Error while processing route: team.index Assertion Failed: Passing classes to store methods has been removed. Please pass a dasherized string instead of undefined EmberError@

我没有弄错。也许有人能帮我

您需要侧向加载数据,并使API返回如下数据:

  {
     "users": [{
        "id": 1,
        "username": "Evolutio",
        "email": "mail@evolutio.tld",
        "display_role": "Administrator",
        "roles": [5]
     }],
     "roles": [{
        "id": 5,
        "name": "admin",
        "alias": "Administrator",
        "users": [1]
     }, {
        "id": 2,
        "name": "user",
        "alias": "Benutzer",
        "users": []
     }, {
        "id": 1,
        "name": "banned",
        "alias": "Gesperrt",
        "users": []
     }, {
        "id": 3,
        "name": "mod",
        "alias": "Moderator",
        "users": []
     }, {
        "id": 4,
        "name": "support",
        "alias": "Supporter",
        "users": []
     }]
  }
//user/model.js:
import DS from 'ember-data';

export default DS.Model.extend({
  username: DS.attr('string'),
  email: DS.attr('string'),
  //display_role: DS.attr('string'),//you don't need this, since user can have multiple roles and also you can access it from the user model itself by doing model.roles.forEach((role)=>{ role.alias or role.name})
  roles: DS.belongsTo('role')
});


//role/model.js
import DS from 'ember-data';

export default DS.Model.extend({
  name: DS.attr('string'),
  alias: DS.attr('string')
});
如果必须像以前那样嵌入数据,可能需要查看EmbeddedRecordsMixin[

但我想提出几点建议:

1) 遵循json-api(),因为ember数据遵循它并支持它(我认为从1.13.0版开始)

2) 我不知道你的需求,但理想情况下,用户模型与角色有很多关系。所以我会做一些不同的事情,比如:

  {
     "users": [{
        "id": 1,
        "username": "Evolutio",
        "email": "mail@evolutio.tld",
        "display_role": "Administrator",
        "roles": [5]
     }],
     "roles": [{
        "id": 5,
        "name": "admin",
        "alias": "Administrator",
        "users": [1]
     }, {
        "id": 2,
        "name": "user",
        "alias": "Benutzer",
        "users": []
     }, {
        "id": 1,
        "name": "banned",
        "alias": "Gesperrt",
        "users": []
     }, {
        "id": 3,
        "name": "mod",
        "alias": "Moderator",
        "users": []
     }, {
        "id": 4,
        "name": "support",
        "alias": "Supporter",
        "users": []
     }]
  }
//user/model.js:
import DS from 'ember-data';

export default DS.Model.extend({
  username: DS.attr('string'),
  email: DS.attr('string'),
  //display_role: DS.attr('string'),//you don't need this, since user can have multiple roles and also you can access it from the user model itself by doing model.roles.forEach((role)=>{ role.alias or role.name})
  roles: DS.belongsTo('role')
});


//role/model.js
import DS from 'ember-data';

export default DS.Model.extend({
  name: DS.attr('string'),
  alias: DS.attr('string')
});

因为一般来说,角色比用户少,而且您不想加载所有数据(角色和用户)在一次请求电话中。

谢谢你的回答,但这不是我想要做的。我试图制作一个团队页面,我们这里的用户列在那里的用户组中。他的回答完全正确,你能试着概括一下,它如何不能解决你原来的问题吗?