Не удается получить данные модели

Я начинаю использовать Ember.js с Rails 3.2.13 через гем ember-rails. Я не могу получить доступ к данным через консоль браузера с помощью следующей команды:

var posts = App.Post.find();

В консоли возвращается неопределенное значение, но в журналах сервера выводится следующее:

Started GET "/posts" for .......
Processing by PostsController#index as JSON
Parameters: {"posts"=>{}}
Post Load SELECT "posts".* FROM "posts"
Completed 200 OK .....

Пожалуйста, дайте мне знать, если я что-то делаю неправильно или что-то упускаю. Спасибо


Вот шаги, которые я предпринял, чтобы установить угольные рельсы

1) Добавить раскаленные рельсы в файл gem

2) После установки пакета я запускаю:

рельсы г Эмбер: начальная загрузка

Это каталоги MVC, app.js, application.js, router.js и store.js.

store.js имеет следующее содержимое:

App.Store = DS.Store.extend({
  revision: 11
});

3) Тогда я сделал

rails g scaffold Post title:string body:text

Затем я добавил гем active_model_serializer и сгенерировал сериализатор для Post.

1 ответ

Можете ли вы проверить фактический ответ от сервера (в Chrome откройте инспектор, найдите запрос в сетевой панели и посмотрите ответ)? Убедитесь, что сервер действительно возвращает правильный JSON. (Также очевидно, я предполагаю, что вы уже создали некоторые Post модели на сервере Rails).

Затем убедитесь, что у вас есть attributes перечислены под вашим сериализатором; Я думаю, что по умолчанию он включает только идентификатор.

Вы также можете попробовать передать идентификатор find: App.Post.find(1) и снова посмотрим, что ответит сервер.

App.Post.find() isync, но он всегда возвращает обещание для данных - он никогда не должен возвращать undefined. Ты можешь позвонить .then() в обещании модели и передайте ему функцию, ожидающую загрузки загруженной модели в качестве аргумента, как только обещание разрешится.

Надеюсь это поможет. Попробуйте проверить ответ сервера и дайте мне знать, если что-то из этого неясно.

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