为多个Rails对象呈现JSON

时间:2015-06-13 07:29:34

标签: ruby-on-rails ruby json

这可能是一个非常简单的问题,但这只是我注意到的困扰我的事情。

我正在尝试从我的一个控制器方法中渲染JSON,但是它给了我一个“未定义的方法`new'for nil:NilClass”错误。

以下是导致问题的代码:

def index
    @users = User.all
    render json: @users
end

我注意到当我尝试只将一个对象渲染为JSON时,一切正常:

def show
    @user = User.find(params[:id])
    render json: @user
end

或者当我在@users对象上调用to_json时:

def index
    @users = User.all
    render json: @users.to_json
end

我的印象是,调用render json:无论如何隐含地调用了to_json,那么为什么要调用两次来解决我的问题呢?

1 个答案:

答案 0 :(得分:1)

我认为问题是@users是一个对象数组的问题,在整个数组被重新组装并输出为JSON之前,需要首先转换每个对象。