AbstractController :: DoubleRenderError - 不确定如何解决

时间:2015-08-04 01:46:54

标签: ruby-on-rails ruby json

很抱歉,如果这是非常明显的,但我是Rails的初学者,并且我很难找到这个问题的答案。

我在创建操作上收到一个AbstractController :: DoubleRenderError,它应该同时创建一个新用户(接收他们的电子邮件地址,密码和密码确认)并创建一个新的配置文件(其中包含一个数字)我要求用户在创建帐户时选择的其他偏好。我基本上想要取回用户和个人资料jsons,如果他们都成功创建,并收到错误,如果他们不是。

我知道我得到的错误是由于双重"渲染json"我有一条线(if下面有一个区块,其他区域下有一个区块),但似乎无法确定如何将这两条线合为一条。

  def create
    @user = User.new(register_params)
    @profile = Profile.new(profile_params)
    if @user.save && @profile.save
      render json: @user, status: :created, location: @user
      render json: @profile, status: :created, location: @profile
    else
      render json: @user.errors, status: :unprocessable_entity
      render json: @profile.errors, status: :unprocessable_entity
    end
  end

提前谢谢!

1 个答案:

答案 0 :(得分:0)

你不能每个控制器渲染两次,如果你需要返回两个模型的结果,你可以写这样的东西

def create
  @user = User.new(register_params)
  @profile = Profile.new(profile_params)
  if @user.save && @profile.save
    render json: user: @user, profile: @profile, status: :created
  else
    render json: user: @user.errors, profile: @profile.errors, status: :unprocessable_entity
  end
end