Не удается получить данные модели
Я начинаю использовать 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()
в обещании модели и передайте ему функцию, ожидающую загрузки загруженной модели в качестве аргумента, как только обещание разрешится.
Надеюсь это поможет. Попробуйте проверить ответ сервера и дайте мне знать, если что-то из этого неясно.