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
您好,在我的应用程序中,我有这样的情况:
在 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