使用渲染后如何停止控制器执行? (在 Rails 上使用 Ruby)

How do I stop controller execution after using render? (Using Ruby on Rails)

我有这个方法:

 def index
  urls = parse_urls(params[:urls])

  responses = Parallel.map (urls) do |url|
    begin
     get url
    rescue  RestClient::Exception
      case params[:errors]
      when 'fail_any'
      render :json => fail_any
      when 'replace'
      replace
      else
      render :json => { :error => 'UNKNOWN_ERROR_TYPE'},status: 400
      end
       {:result=>'failed'}
    end
  end

但是我想在渲染后停止控制器的执行。 我尝试在渲染后添加中断,但收到一条错误消息

Parallel::DeadWorker

Marshal.load(read)
  rescue EOFError
    raise DeadWorker
  end
  raise result.exception if ExceptionWrapper === result
  result

使用:return:

return render :json => fail_any

或者,在 render :json ... 行之后使用 return,例如:

render :json => fail_any
return

更新:

render :text => "No Data" and return if some_condition

或者,如果您确定要在此时停止控制器执行,只需 render and return

render :text => "No Data" and return

这确保执行在遇到语句后停止,并且在操作代码中不再发生流程,因为它看到 return.

Render and Return 上的这篇文章可能会有用。

使用线程代替进程(默认选项)解决的问题

  responses = Parallel.map(urls, :in_threads => 3) do |url|