多个渲染错误

时间:2018-08-12 23:43:53

标签: ruby-on-rails

这个问题被问了很多遍,但是我发现我以为是解决方案的一个答案没有帮助。它指向了这个article,但也许我没有正确应用它。

这是代码情况: 好的,我正在控制器中执行以下操作:

def create

   # some code
   create_record and return
end

private

  def create_record

      begin
          curr_user.events.build(#lots of fields).save!
      rescue
          render head :internal_server_error and return true
      end

      render head:ok and return true
  end

但是我的日志中出现以下错误:AbstractController :: DoubleRenderError。错误消息后指出的令人反感的行是对create_record的调用,救援块的开始以及救援块中的呈现。

1 个答案:

答案 0 :(得分:0)

问题是,当您从方法return create_record时,它仅从该方法返回,而不是调用此方法的实际操作。

因此,您在render head :internal_server_error方法内render head: :okcreate_record并从那里返回。控制权回到动作create,按照惯例,它尝试呈现模板 create 。因此,AbstractController::DoubleRenderError

要解决此问题,建议您将代码更改为以下内容:

def create
  begin
    create_record
  rescue
    head :internal_server_error and return true
  end

  head :ok
end

private

def create_record
  curr_user.events.build(#lots of fields).save!
end

警告:检查head :ok的语法。我不确定。.