Rails渲染return不停止执行

Rails render return do not stop execution

您好,在我的应用程序中,我有这样的情况:

some_controller.rb 我有一个代码:

def start
  method1(param)
  ....
  if some_case
    render json: {ok: "ok"}
  end
end

def method1
  ...
  if some_case
    render json: {error: "Some error"}
    return
  end
end

问题是当需要渲染 json 错误时,我得到了 double render 错误。它建议我使用 render .. and return。我什至尝试过,但仍然出现此错误。 这是因为 render 不会中断执行本身,而只是 returns 调用方方法吗?如果是这样,我该怎么办?问题是 method1 实际上是一个大方法,我当然希望它与 start 方法分开。如果没有理由在那里呈现错误,我希望继续执行 start

谢谢!

考虑改用过滤器。这有效:

before_action :method1, only: :start
def start
  ....
  if some_case
    render json: {ok: "ok"}
  end
end

def method1
  ...
  if some_case
    render json: {error: "Some error"}
    return
  end
end

当在过滤器中进行渲染时,它不会 运行 本身进行操作,因此不会发生双重渲染。

使用此代码

def method1
  if some_case
    render json: {error: "Some error", status: :unprocessable_entity }
  end
end