【发布时间】:2014-11-28 15:51:38
【问题描述】:
所以我试图从控制器中的操作中获取一些信息。
当前的操作如下所示:
def index
@users = User.all
respond_to do |format|
format.html
format.json { render json: @users }
end
end
这个索引页被设置为routes.rb中的根
现在,这就是我的 AngularJs 控制器的样子,我试图从那里获取信息:
@test.controller 'TestCtrl', ['$scope', '$location', '$http', ($scope, $location, $http) ->
$scope.data = []
$http.get('/')
.success (data) =>
$scope.data = data
console.log($scope.data)
.error (data) ->
console.log('error!')
]
当我加载根页面时,我只会在 Javascript 控制台日志中将整个页面加载为 html。
那么我是否遗漏了一些需要做的事情才能让动作index 以json 响应我的AngularJs 控制器?
服务器日志:
Started GET "/" for 127.0.0.1 at 2014-11-28 18:02:26 +0200
Processing by VisitorsController#index as HTML
(0.4ms) SELECT COUNT(*) FROM "users"
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 ORDER BY "users"."id" ASC LIMIT 1
(2.1ms) SELECT COUNT(*) FROM "users" INNER JOIN "relationships" ON "users"."id" = "relationships"."followed_id" WHERE "relationships"."follower_id" = $1 [["follower_id", 1]]
(0.2ms) SELECT COUNT(*) FROM "users" INNER JOIN "relationships" ON "users"."id" = "relationships"."follower_id" WHERE "relationships"."followed_id" = $1 [["followed_id", 1]]
Rendered users/_stats.html.erb (4.8ms)
Rendered visitors/index.html.erb within layouts/application (6.9ms)
Rendered layouts/_navigation_links.html.erb (0.3ms)
Rendered layouts/_navigation.html.erb (0.7ms)
Rendered layouts/_messages.html.erb (0.0ms)
Completed 200 OK in 137ms (Views: 134.0ms | ActiveRecord: 2.9ms)
【问题讨论】:
-
您遇到了什么错误?你检查过你的 Rails 应用服务器日志吗?
-
我没有收到任何错误。我的问题只是控制器以 html 而不是 json 格式提供了我的 AngularJs 控制器数据。如果我打印出从请求中获得的数据,它就是 html 中的整个页面。
-
你能在你的控制器中试试这个吗?
format.json { render json: @users.to_json } -
类似
vistors/index.json或者你需要告诉 Angular 的 $http.get 来获取 json -
所以如果你现在有一个visitors/index.json那为什么没有$http.get(/index.json).success,你需要调整.get()里面
标签: javascript ruby-on-rails json angularjs