这可能是一个非常简单的问题,但这只是我注意到的困扰我的事情。
我正在尝试从我的一个控制器方法中渲染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
,那么为什么要调用两次来解决我的问题呢?
答案 0 :(得分:1)
我认为问题是@users
是一个对象数组的问题,在整个数组被重新组装并输出为JSON之前,需要首先转换每个对象。