2013-05-18 5 views
0

Я начал использовать 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 ..... 

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


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

1) Добавить Ember-рельсы самоцвета файл

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.

+0

'App.Post.find();' is async, поэтому, я думаю, это нормально, что вы немедленно возвращаете 'undefined' обратно с консоли браузера, если вы открываете свою вкладку в сети (предполагая хром), вы должны увидеть запрос xhr сделайте, щелкните по нему, а затем перейдите на вкладку «Ответ» и посмотрите, есть ли у вас данные. Если он есть, то все работает правильно. Теперь почему вы не уверены в консоли? Ну, я думаю, потому что консоль не async :) и не ждет ответа, чтобы вернуться, вы получите неопределенный, имеет ли смысл? – intuitivepixel

+0

Я понимаю асинхронную часть, но на основе этого [учебника] (http://www.zhubert.com/blog/2012/04/28/ember-dot-js-and-rails-part-2/), как они могут получить доступ к данным? Мои шаги очень похожи, так что я не делаю? - спасибо –

+0

хорошо учебник вы используете больше, чем один год ... многое изменилось с тех пор в ember земли, вы должны, возможно, использовать другой более современный учебник. – intuitivepixel

ответ

0

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

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

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

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

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

Смежные вопросы