2015-01-15 102 views
3

我正在开发我的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没有PARAMS获得JSON响应。

任何人都可以解释这一点吗?

回答

0

我不能确定这里提供了什么,但有一个理解的格式被传递。

因此,可以说你的代码看起来像这样(我需要的控制器):

class ItemsController < ApplicationController 
    def index 
    @items = Item.all 
    end 
end 

和你的路线是这样的

resources :items 

这究竟说的是这样的:

resources :items, defaults: {format: 'html'} 

因此,如果没有其他的事情做,它会假设你正在寻找一个HTML响应。

试试这个: 类上述ItemsController <的ApplicationController respond_to代码:JSON 高清指数 @items = Item.all 结束 结束

然后在您的视图,创建index.json.erb或:

class ItemsController < ApplicationController 
    respond_to :json 
    def index 
    render json: Item.all.to_json 
    end 
end