Rails,如何使redirect_to异步,所以它在动作结束之前执行了?

时间:2016-03-02 12:10:42

标签: ruby-on-rails url-redirection

在我的操作中,我发出redirect_to然后运行一些计算。我的代码看起来像下面的

def method_in_controller:
  url = params[:url]
  redirect_to url
  computation_related_to_this_call #Some method which will take some insignificant amount of time

由于redirect_to在操作结束时执行,因此它会被有效阻止,直到执行redirect_to语句之后的所有语句。这会延迟应用程序对用户的响应(重定向)。如何在不等待其余操作完成执行的情况下对return_to采取行动?

例如,如果computation_related_to_this_call如下所示,redirect_to在10秒睡眠后执行。

def computation_related_to_this_call:
  sleep(10)

我必须使用后台作业gem(ResqueSidekiq)或Threading来实现我在这里寻找的目标吗?

1 个答案:

答案 0 :(得分:1)

使用回调

before_action :name_of_method, only: [:action_name]


def name_of_method
 ..
 do something 
 ..
end