在我的Rails 4应用中,我的API::V1::ClustersController
结构如此:
class Api::V1::ClustersController < ApplicationController
respond_to :json
def index
@clusters = Cluster.all
render json: @clusters
end
class
在我的app/views/api/v1/clusters/index.json.jbuilder
视图中:
json.array!(@clusters) do |cluster|
json.extract! cluster, :id, :index
json.url cluster_url(cluster, format: :json)
end
在我的路线中:
namespace :api, defaults: { format: :json } do
namespace :v1 do
authenticated :user do
resources :clusters
end
end
end
不幸的是,当我点击http://localhost:3000/api/v1/clusters.json
时,以下是json输出:
{
clusters: [
{
id: 1,
organization: null,
number: null,
name: "Roob Group",
created_at: "2014-07-16T17:41:09.214Z",
updated_at: "2014-07-16T17:41:09.214Z"
},
{
id: 2,
organization: null,
number: null,
name: "Lesch LLC",
created_at: "2014-07-16T17:41:09.302Z",
updated_at: "2014-07-16T17:41:09.302Z"
}
]
}
我不知道还能做什么。任何帮助表示赞赏。
答案 0 :(得分:4)
在这种情况下,您需要在控制器中使用respond_with
而不是render
class Api::V1::ClustersController < ApplicationController
respond_to :json
def index
@clusters = Cluster.all
respond_with @clusters
end
end
当您拨打render json: @clusters
时,请致电render @clusters.to_json
,以便您的控制器不会呈现模板。如果您想使用render
,可以将其包含在respond_to
块中,但respond_with更优雅。