0

我开始通过 ember-rails gem 将 Ember.js 与 Rails 3.2.13 一起使用。我无法使用以下命令通过浏览器控制台访问数据:

var posts = App.Post.find();

它在控制台上返回undefined,但在服务器日志中输出以下内容:

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

如果我做错了什么或遗漏了什么,请告诉我。谢谢


这是我安装 ember-rails 的步骤

1) 将 ember-rails 添加到 gem 文件

2)在我的包安装后,我运行:

rails g ember:bootstrap

有 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 gem 并为 Post 生成了一个序列化程序。

4

1 回答 1

0

您可以检查来自服务器的实际响应(在 Chrome 中,打开检查器,在网络面板中找到请求并查看响应)?确保服务器实际上返回了正确的 JSON。(同样显然,我假设您已经Post在 Rails 服务器上创建了一些模型)。

接下来,确保您attributes的序列化程序下列出了正确的;我认为默认情况下它只包含 id。

您还可以尝试将 id 传递给find: App.Post.find(1)并再次查看服务器响应是什么。

App.Post.find()是异步的,但它总是返回对数据的承诺——它永远不应该返回未定义的。您可以调用.then()模型承诺并将其传递给期望加载的模型作为参数的函数,以便在承诺解决后立即运行。

希望这可以帮助。尝试检查服务器响应,如果有任何不清楚的地方,请告诉我。

于 2013-05-21T04:10:34.553 回答