我正在开发我的api,我想把所有东西都呈现为Json。
在控制器中我有:
def index
@items = Item.all
end
呈现以下内容:
<html><head><style type="text/css"></style></head><body></body></html>
这很奇怪,因为我没有任何布局文件,而且请求是针对json mime的。
但如果我只是在没有参数的情况下添加对render
的调用,则会突然使用jbuilder
模板。
def index
@items = Item.all
render
end
我真的不明白为什么隐式渲染器只在HTML中渲染,而我必须调用render
而不使用参数来获取json响应。
任何人都可以向我解释这个吗?
答案 0 :(得分:0)
我不能确定这里提供的是什么,但有一种理解的格式被传递。
让我们说你的代码看起来像这样(我需要控制器):
class ItemsController < ApplicationController
def index
@items = Item.all
end
end
,你的路线看起来像这样
resources :items
这真的是这样说的:
resources :items, defaults: {format: 'html'}
因此,如果没有其他方法,它将假设您正在寻找HTML响应。
试试这个: class ItemsController&lt; ApplicationController的 respond_to:json def指数 @items = Item.all 结束 端
然后在您的视图中,创建index.json.erb或:
class ItemsController < ApplicationController
respond_to :json
def index
render json: Item.all.to_json
end
end