Невозможно получить ответ JSON от бэкэнда RoR с использованием EmberJS и Ember-data

Я знаю, что это немного сложный вопрос. Дело в том, что я успешно соединил две модели со сложными отношениями (используя объединение таблиц между ними и т. Д.) Между моим бэкэндом Ruby on Rails и Ember/Ember-Data посредством ответа JSON.

Знаете, проблема в том, что я не могу подключить третью модель. Его идентификаторы встроены в другую модель, работающую нормально. Дело даже в том, что я действительно получаю рабочий JSON-ответ с данными, но моя модель ember-data почему-то не получает их на моем контроллере ember.

Это модель, которую я пытаюсь получить:

Profile.js

App.Adapter.map
(
  'App.Profile',
  {
    projects: {embedded: 'load'},
    people: {embedded: 'load'}
  }
);

App.Profile = DS.Model.extend
(
   {
      name: DS.attr('string'),
      tools: DS.attr('string'),
      number: DS.attr('number'),
      projects: DS.hasMany('App.Project', {embedded: 'load'}),
      people: DS.hasMany('App.Person', {embedded: 'load'})
   }
);

Модель Person.js, чей ответ JSON является действительным, вернулась:

App.Adapter.map
(
  'App.Person',
  {
    profiles: {embedded: 'load'},
    projectsCreated: {embedded: 'load'},
    projects: {embedded: 'load'},
    friends: {embedded: 'load'}
  }
);

App.Person = DS.Model.extend
(
   {
      name: DS.attr('string'),
      place: DS.attr('string'),
      email: DS.attr('string'),
      password: DS.attr('string'),
      academic: DS.attr('string'),
      professional: DS.attr('string'),
      profiles: DS.hasMany('App.Profile', {embedded: 'load'}),
      knowledge: DS.attr('string'),
      projectsCreated: DS.hasMany('App.Project', {embedded: 'load'}),
      projects: DS.hasMany('App.Project', {embedded: 'load'}),
      friends: DS.hasMany('App.Person', {embedded: 'load'}),
      iconUrl: DS.attr('string')
   }
);

Сериализаторы profile_serializer.rb и person_serializer.rb используются для каждого:

class ProfileSerializer < ActiveModel::Serializer
  attributes :id,
             :name,
             :tools,
             :number

  has_many :projects, ember: :id
  has_many :people, ember: :id           
end

class PersonSerializer < ActiveModel::Serializer
  attributes :id,
             :name,
             :place,
             :email,
             :password,
             :academic,
             :professional,
             :knowledge,
             :icon_url

  has_many :friends, embed: :id
  has_many :projects_created, embed: :id
  has_many :projects, embed: :id
  has_many :profiles, embed: :id
end       

И, в конце, ответы JSON:

GET http://localhost:3000/people 

{
    "people": [
        {
            "id": 1,
            "name": "Daniel",
            "place": "Ireland",
            "email": "daniel@example.com",
            "password": "123456",
            "academic": "Computing Engineer",
            "professional": "Fundecor",
            "knowledge": "html, css, javascript, jquery, ember",
            "icon_url": "http://imageshack.us/a/img196/6619/xckl.jpg",
            "friend_ids": [
                2,
                3
            ],
            "projects_created_ids": [
                1
            ],
            "project_ids": [],
            "profile_ids": [
                1,
                3,
                5
            ]
        },
        {
            "id": 2,
            ...
        },
        {
            "id": 3,
            ...
        }
    ]
}

И следующим шагом является запрос для этого profile_ids чей правильный ответ:

GET http://localhost:3000/profiles?ids%5B%5D=1&ids%5B%5D=3&ids%5B%5D=5

{
    "profiles": [
        {
            "id": 1,
            "name": "Frontend",
            "tools": "html, css, javascript, jquery",
            "number": 0,
            "projects": [],
            "people": [
                {
                    "id": 1,
                    "name": "Daniel",
                    "place": "Ireland",
                    "email": "daniel@example.com",
                    "password": "123456",
                    "academic": "Computing Engineer",
                    "professional": "Fundecor",
                    "knowledge": "html, css, javascript, jquery, ember",
                    "icon_url": "http://imageshack.us/a/img196/6619/xckl.jpg",
                    "friend_ids": [
                        2,
                        3
                    ],
                    "projects_created_ids": [
                        1
                    ],
                    "project_ids": [],
                    "profile_ids": [
                        1,
                        3,
                        5
                    ]
                }
            ]
        },
        {
            "id": 2,
            "name": "Mobile Developer",
            ...
        },
        ...
    ]
}

Все записи профилей возвращаются. Но дело в том, что, когда я пытаюсь получить это через мой контроллер или мой маршрут, результат, получаемый на консоли браузера (firebug или подобный), пуст. Каждое поле человека заполнено правильно, в том числе profile_ids, но не profile Сама модель.

Возможно, если вы хотите иметь весь код целиком, вы можете проверить его на https://github.com/neil89/project-on. Заранее большое спасибо за ваши ответы.

0 ответов

Другие вопросы по тегам